2012-09-18 24 views
33

ListViewに、setHeaderView()setFooterView()ViewInflaterというメソッドを使用してフッターとヘッダービューを追加します。それはかなりうまくいく。ListViewのヘッダーまたはフッターをクリックできないようにする方法

しかし、ヘッダーやフッターの表示がonListItemClickイベントを発生させないようにするにはどうすればよいですか?もちろん、イベントをキャッチしてヘッダーやフッターから来たものかどうかを確認することができますが、これは問題の1つの部分を解決するだけです。

答えて

63

ListView#addHeaderView(View v, Object data, boolean isSelectable); と一致するaddFooter()メソッドを使用してください。


Object dataパラメータの目的。ビューバッキング

データ:

リストビューソースコードはdataパラメータとを記載しています。これはListAdapter#getItem(int)から返されます。私はlistView.getAdapter().getItem(0);を使用している場合、それは私たちのヘッダからdataオブジェクトを返すことを意味します


私が例でこれを詳しく説明しましょう:私たちは頼めばその後

listView.addHeaderView(view, "Potato", false); 
listView.setAdapter(adapter); 

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); 

次にのヘッダを追加し、アダプタを設定してみましょう

Log.v("ListAdapter", listView.getAdapter().getItem(0)); // output: "Potato" 
Log.v("ArrayAdapter", adapter.getItem(0));    // output: "one" 
+2

すごい!できます。もう1つの質問は、データオブジェクトは何ですか?現時点では、データパラメータをnullに設定しました。しかし、私はそれに実際のオブジェクトを渡すときに何が起こるのですか? – Flo

+0

今は分かりませんが、ソースコードを読んでいて、それがどのように動作するかをオンラインで見ています。もし私がそれを把握すれば、私はアップデートを投稿します! – Sam

+0

それは動作します。多くの時間を節約できました。 – Anukool

関連する問題