How to make the header or footer of a ListView not clickable

老子叫甜甜 提交于 2019-12-29 06:34:09

问题


I'm adding a footer and header view to a ListView by using the methods setHeaderView() and setFooterView() and a ViewInflater. That works quite well.

But how could I prevent the header or footer view from firing onListItemClick events? Of course I can catch the event and check whether it came from a header or footer, but this only solves one part of the problem, as header and footer got still focused when clicked.


回答1:


Simply use the ListView#addHeaderView(View v, Object data, boolean isSelectable); and matching addFooter() method.


The purpose of Object data parameter.

The ListView source code describes the data parameter as:

The data backing the view. This is returned from ListAdapter#getItem(int).

Which means if I use listView.getAdapter().getItem(0); it will return the data Object from our header.


I'll elaborate this with an example:

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

Next let's add a header and set the adapter:

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

Later if we ask:

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


来源:https://stackoverflow.com/questions/12480762/how-to-make-the-header-or-footer-of-a-listview-not-clickable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!