web-dev-qa-db-ja.com

ListViewのヘッダーまたはフッターをクリックできないようにする方法

メソッドsetHeaderView()setFooterView()およびListViewを使用して、フッターとヘッダーのビューをViewInflaterに追加しています。それは非常にうまく機能します。

しかし、ヘッダービューまたはフッタービューがonListItemClickイベントを発生させないようにするにはどうすればよいですか?もちろん、イベントをキャッチして、ヘッダーとフッターのどちらからのものかを確認することはできますが、ヘッダーとフッターをクリックしてもフォーカスが維持されるため、これは問題の一部しか解決しません。

33
Flo

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"
_
65
Sam