Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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.

like image 271
Flo Avatar asked Sep 18 '12 16:09

Flo


People also ask

How do I add a header to a list view?

Android App Development for Beginners This example demonstrates How to add header item for Listview in Android. Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project. Step 2 − Add the following code to res/layout/activity_main. xml.


1 Answers

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" 
like image 73
Sam Avatar answered Sep 18 '22 17:09

Sam