33

我正在ListView使用方法setHeaderView()setFooterView()和 a向 a 添加页脚和页眉视图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 回答