ListView in Android example

android.widget.ListView is widely used in android mobile app.It displays all the list items in the form of a vertical list. This article will show you examples about how to create ListView and how to add item data in it.

1. How To Get A ListView Object.

There are two ways to create a ListView.

  1. Use android.widget.ListViewwidget directly.
  2. Make your activity class extends android.app.ListActivity. Then you can call its setAdapter() method to set item data, and its onListItemClick() method is used to response list item click action.

After you get the ListView object, you need to add item data in it through Adapter. There are following Adapters that you can use.

  1. ArrayAdapter.
  2. SimpleAdapter.
  3. BaseAdapter.

You can even use other adapters, but these three adapters are most used. We will show you above adapter examples later.

2. ListView Properties And Methods.

  1. android:choiceMode : The value can be singleChoice (can only select one item ),multipleChoice( can select multiple item ) or none.
  2. android:divider : It is a color or drawable object id, used to set divider color.
  3. android:dividerHeight : Set the divider height.
  4. android:entries : The value is a array resource id defined in android studio. The array data will be shown in the ListView.
  5. android:headerDividersEnabled : Boolean value, true means draw divider after header view.
  6. android:footerDividersEnabled : Boolean value, true means draw divider before footer view.
  7. setOnItemClickListener() : Set OnItemClickListener object which will response to ListView item click event.

3. ListView ArrayAdapter Example.

If you can not watch the above video, you can see it on the youtube URL https://youtu.be/c5Fv78xCI6M

activity_list_view.xml

ListViewActivity.java

Please note the second parameter for ArrayAdapter constructor can have below values.

  1. simple_list_item_1 : Each list item is a TextView object.
  2. simple_list_item_2: Each list item is a TextView object, text size is bigger.
  3. simple_list_item_checked : Each list item is a checked checkbox.
  4. simple_list_item_single_choice : Display a radio button in the right of each list item. Even it is a radio button, it can be multiple checked if ListViewsandroid:choiceMode value ismultipleChoice.
  5. simple_list_item_multiple_choice :Display a checkbox in the right of each list item. Even it is a checkbox, it can be single checked if ListViewsandroid:choiceMode value issingleChoice.
ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, dataList);package com.dev2qa.example; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class ListViewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view); this.arrayAdapterListView(); } // This method use an ArrayAdapter to add data in ListView. private void arrayAdapterListView() { setTitle("dev2qa.com - ArrayAdapter List View Example"); List dataList = new ArrayList(); dataList.add("Java"); dataList.add("Android"); dataList.add("JavaEE"); dataList.add("JSP"); dataList.add("JDBC"); ListView listView = (ListView)findViewById(R.id.listViewExample); ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, dataList); listView.setAdapter(arrayAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, int index, long l) { Object clickItemObj = adapterView.getAdapter().getItem(index); Toast.makeText(ListViewActivity.this, "You clicked " + clickItemObj.toString(), Toast.LENGTH_SHORT).show(); } }); } }

4. ListView SimpleAdapter Example.

If you can not watch the above video, you can see it on the youtube URL https://youtu.be/9BYH4Ftclv0

activity_list_view.xml

ListViewActivity.java

Please note the SimpleAdapter creation code. There are 5 parameters in the SimpleAdapter constructor.

  1. First parameter : This is the context object that this SimpleAdapter will be used with.
  2. Second parameter : This is a List> object, each map object in the list represent a ListView item data.
  3. Third parameter : This is the ListViews item UI component layout xml. It decides which UI components will be shown in eachListView item.
  4. Fourth parameter : This String array contains map objects keys. Each key related map value will be shown in the ListView item.
  5. Fifth parameter : This int array contains the view objects resource id in item layout xml file(second parameter specified). Each view object will display related value extracted from map object use keys( fourth parameter specified) by order.
SimpleAdapter simpleAdapter = new SimpleAdapter(this,itemDataList,android.R.layout.simple_list_item_2, new String[]{"title","description"},new int[]{android.R.id.text1,android.R.id.text2});package com.dev2qa.example; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class ListViewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view); this.simpleAdapterListView(); } // This method use SimpleAdapter to show data in ListView. private void simpleAdapterListView() { setTitle("dev2qa.com - SimpleAdapter List View Example"); String[] titleArr = { "Name", "Sex", "Age", "Location","Email"}; String[] descArr = { "Jerry", "Male", "43", "Singapore", "[emailprotected]" }; ArrayList> itemDataList = new ArrayList>();; int titleLen = titleArr.length; for(int i =0; i < titleLen; i++) { Map listItemMap = new HashMap(); listItemMap.put("title", titleArr[i]); listItemMap.put("description", descArr[i]); itemDataList.add(listItemMap); } SimpleAdapter simpleAdapter = new SimpleAdapter(this,itemDataList,android.R.layout.simple_list_item_2, new String[]{"title","description"},new int[]{android.R.id.text1,android.R.id.text2}); ListView listView = (ListView)findViewById(R.id.listViewExample); listView.setAdapter(simpleAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, int index, long l) { Object clickItemObj = adapterView.getAdapter().getItem(index); Toast.makeText(ListViewActivity.this, "You clicked " + clickItemObj.toString(), Toast.LENGTH_SHORT).show(); } }); } }

5. ListView Custom SimpleAdapter Example.

This example will customize a SimpleAdapter object which use self defined ListView item layout to add a picture at the beginning of each ListView item.

If you can not watch the above video, you can see it on the youtube URL https://youtu.be/XJOX6qtZuxk

activity_list_view.xml

ListViewActivity.java

package com.dev2qa.example; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import static com.dev2qa.example.R.id.userDesc; import static com.dev2qa.example.R.id.userTitle; public class ListViewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view); this.customSimpleAdapterListView(); } // This method shows how to customize SimpleAdapter to show image and text in ListView. private void customSimpleAdapterListView() { setTitle("dev2qa.com - Custom SimpleAdapter List View Example"); String[] titleArr = { "Name", "Sex", "Age", "Location","Email"}; String[] descArr = { "Jerry", "Male", "43", "Singapore", "[emailprotected]" }; ArrayList> itemDataList = new ArrayList>();; int titleLen = titleArr.length; for(int i =0; i < titleLen; i++) { Map listItemMap = new HashMap(); listItemMap.put("imageId", R.mipmap.ic_launcher); listItemMap.put("title", titleArr[i]); listItemMap.put("description", descArr[i]); itemDataList.add(listItemMap); } SimpleAdapter simpleAdapter = new SimpleAdapter(this,itemDataList,R.layout.activity_list_view, new String[]{"imageId","title","description"},new int[]{R.id.userImage, userTitle, userDesc}); ListView listView = (ListView)findViewById(R.id.listViewExample); listView.setAdapter(simpleAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, int index, long l) { Object clickItemObj = adapterView.getAdapter().getItem(index); HashMap clickItemMap = (HashMap)clickItemObj; String itemTitle = (String)clickItemMap.get("title"); String itemDescription = (String)clickItemMap.get("description"); Toast.makeText(ListViewActivity.this, "You select item is " + itemTitle + " , " + itemDescription, Toast.LENGTH_SHORT).show(); } }); }

6. ListView Custom BaseAdapter Example.

If you still need more customization for ListView item. You can useandroid.widget.BaseAdapter. Override its getCount() and getView() method.

This example set different item row background color and add a button for each item row.

If you can not watch the above video, you can see it on the youtube URL https://youtu.be/e71VJsnfRtw

activity_list_view_base_adapter.xml