33

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

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

4

1 に答える 1

65

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"
于 2012-09-18T16:22:42.133 に答える