メソッドsetHeaderView()
とsetFooterView()
およびListView
を使用して、フッターとヘッダーのビューをViewInflater
に追加しています。それは非常にうまく機能します。
しかし、ヘッダービューまたはフッタービューがonListItemClick
イベントを発生させないようにするにはどうすればよいですか?もちろん、イベントをキャッチして、ヘッダーとフッターのどちらからのものかを確認することはできますが、ヘッダーとフッターをクリックしてもフォーカスが維持されるため、これは問題の一部しか解決しません。
ListView#addHeaderView(View v、Object data、boolean isSelectable); と一致するaddFooter()
メソッドを使用するだけです。
_Object data
_パラメータの目的。
ListViewソースコードは、data
パラメータを次のように記述しています。
ビューを裏付けるデータ。これはListAdapter#getItem(int)から返されます。
つまり、listView.getAdapter().getItem(0);
を使用すると、ヘッダーからdata
オブジェクトが返されます。
例を挙げてこれを詳しく説明します。
_listView = (ListView) findViewById(R.id.list);
String[] array = new String[] {"one", "two", "three"};
adapter = new ArrayAdapter<String>(this, Android.R.layout.simple_list_item_1, array);
_
次に、ヘッダーを追加してアダプターを設定しましょう。
_listView.addHeaderView(view, "Potato", false);
listView.setAdapter(adapter);
_
後で尋ねると:
_Log.v("ListAdapter", listView.getAdapter().getItem(0)); // output: "Potato"
Log.v("ArrayAdapter", adapter.getItem(0)); // output: "one"
_