如何使ListView的页眉或页脚不可点击

Flo*_*Flo 33 android listview android-listview

我添加一个页脚和页眉视图到ListView通过使用方法setHeaderView()setFooterView()和一个ViewInflater.这非常有效.

但是,如何阻止页眉或页脚视图触发onListItemClick事件?当然,我可以捕获事件并检查它是否来自页眉或页脚,但这只解决了问题的一部分,因为页眉和页脚在单击时仍然聚焦.

Sam*_*Sam 65

只需使用ListView#addHeaderView(View v,Object data,boolean isSelectable); 和匹配addFooter()方法.


Object data参数的目的.

ListView源代码将data参数描述为:

支持视图的数据.这是从ListAdapter#getItem(int)返回的.

这意味着如果我使用listView.getAdapter().getItem(0);它将返回data标头中的Object.


我将通过一个例子详细说明:

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);
Run Code Online (Sandbox Code Playgroud)

接下来让我们添加一个标头并设置适配器:

listView.addHeaderView(view, "Potato", false);
listView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

稍后如果我们问:

Log.v("ListAdapter", listView.getAdapter().getItem(0));  // output: "Potato" 
Log.v("ArrayAdapter", adapter.getItem(0));               // output: "one"
Run Code Online (Sandbox Code Playgroud)

  • 太棒了!有用.还有一个问题是什么是数据对象?目前我将data参数设置为null.但是当我将一个真实的物体传递给它时会发生什么呢? (3认同)