33
我使用方法setHeaderView()
和setFooterView()
和ViewInflater
将页脚和页眉视图添加到ListView
。这工作得很好。如何使ListView的页眉或页脚不可点击
但我怎么能阻止页眉或页脚视图发射onListItemClick
事件?当然,我可以捕捉事件并检查它是来自页眉还是页脚,但这只能解决问题的一部分,因为页眉和页脚在点击时仍然集中。
我使用方法setHeaderView()
和setFooterView()
和ViewInflater
将页脚和页眉视图添加到ListView
。这工作得很好。如何使ListView的页眉或页脚不可点击
但我怎么能阻止页眉或页脚视图发射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"
啊,太棒了!有用。还有一个问题是什么数据对象?此刻我将数据参数设置为空。但是当我将一个真实的物体传递给它时会发生什么? – Flo
现在我不知道,我正在阅读源代码并在网上查看它是如何工作的。我会发布更新,如果我弄明白了! – Sam
它的工作原理。节省了很多时间。 – Anukool