ListView関連の備忘録
xmlに定義した
- first
- second
- thrid
String[] student_id = getResources().getStringArray(R.array.student_id);
ListViewに表示する方法は4つに分かれます。
- android:entriesとandroid:entryValuesを使う
- ListActivityを拡張しgetView()メソッドを実装しない
- Activityを拡張しgetView()メソッドを実装しない
- getView()メソッドを実装する
android:entriesとandroid:entryValuesを使う
ListPreferenceを使っている場合には下記のような記述で値を受け取れる。メリットはJavaのコードをいじる必要がない。
ListActivityを拡張しgetView()メソッドを実装しない
main.xml
student_list.xml
StudentListActivity
public class StudentListActivity extends ListActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ArrayAdapteradapter = new ArrayAdapter (this, R.layout.student_list, getResources().getStringArray(R.array.student_id)); this.setListAdapter(adapter); } }
student_list.xmlに
01-07 23:28:37.257: ERROR/ArrayAdapter(431): You must supply a resource ID for a TextView 01-07 23:28:37.286: ERROR/AndroidRuntime(431): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
ArrayAdapterを作成するときのエラー解決メモ - 整理できない底辺プログラマのメモブログによるとOrientationがVerticalの場合にはエラーになるらしい。しかし今回は android:orientation="vertical"を外してもエラーになる。またデフォルトはHorizontalらしい。
Activityを拡張しgetView()メソッドを実装しない
main.xml
student_list.xml
- 変更ありません
StudentListActivity.java
public class StudentListActivity extends ListActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ArrayAdapteradapter = new ArrayAdapter (this, R.layout.student_list, getResources().getStringArray(R.array.student_id)); ListView listView = (ListView) findViewById(R.id.lv_student); // アダプターを設定します listView.setAdapter(adapter); } }