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.
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"
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.