Android ListView example
In Android, ListView let you arranges components in a vertical scrollable list.
In this tutorial, we will show you 2 ListView examples :
- Normal way to display components in
ListView. - Custom array adapter to customize the item display in
ListView.
P.S This project is developed in Eclipse 3.7, and tested with Android 2.3.3.
1. Normal ListView example
In this example, we show you how to display a list of fruit name via ListView, it should be easy and self-explanatory.
1.1 Android Layout file
File : res/layout/list_fruit.xml
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:textSize="20sp" > </TextView>
1.2 ListView
package com.mkyong.android; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; public class ListFruitActivity extends ListActivity { static final String[] FRUITS = new String[] { "Apple", "Avocado", "Banana", "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit", "Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // no more this // setContentView(R.layout.list_fruit); setListAdapter(new ArrayAdapter<String>(this, R.layout.list_fruit,FRUITS)); ListView listView = getListView(); listView.setTextFilterEnabled(true); listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // When clicked, show a toast with the TextView text Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); } }); } }
1.3 Demo

2. Custom ArrayAdapter example
In this example, we show you how to create 4 items in the ListView, and use a custom “ArrayAdapter” to display different images base on the “item name” in the list.
2.1 Images
Get 4 images for demonstration.

2.2 Android Layout file
File : res/layout/list_mobile.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" > <ImageView android:id="@+id/logo" android:layout_width="50px" android:layout_height="50px" android:layout_marginLeft="5px" android:layout_marginRight="20px" android:layout_marginTop="5px" android:src="@drawable/windowsmobile_logo" > </ImageView> <TextView android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@+id/label" android:textSize="30px" > </TextView> </LinearLayout>
2.3 Custom ArrayAdapter
Create a class extends ArrayAdapter and customize the item display in the getView() method.
package com.mkyong.android.adaptor; import com.mkyong.android.R; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class MobileArrayAdapter extends ArrayAdapter<String> { private final Context context; private final String[] values; public MobileArrayAdapter(Context context, String[] values) { super(context, R.layout.list_mobile, values); this.context = context; this.values = values; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflate(R.layout.list_mobile, parent, false); TextView textView = (TextView) rowView.findViewById(R.id.label); ImageView imageView = (ImageView) rowView.findViewById(R.id.logo); textView.setText(values[position]); // Change icon based on name String s = values[position]; System.out.println(s); if (s.equals("WindowsMobile")) { imageView.setImageResource(R.drawable.windowsmobile_logo); } else if (s.equals("iOS")) { imageView.setImageResource(R.drawable.ios_logo); } else if (s.equals("Blackberry")) { imageView.setImageResource(R.drawable.blackberry_logo); } else { imageView.setImageResource(R.drawable.android_logo); } return rowView; } }
2.4 ListView
ListView, but use above custom adapter to display the list.
package com.mkyong.android; import com.mkyong.android.adaptor.MobileArrayAdapter; import android.app.ListActivity; import android.os.Bundle; import android.widget.ListView; import android.widget.Toast; import android.view.View; public class ListMobileActivity extends ListActivity { static final String[] MOBILE_OS = new String[] { "Android", "iOS", "WindowsMobile", "Blackberry"}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new MobileArrayAdapter(this, MOBILE_OS)); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { //get selected items String selectedValue = (String) getListAdapter().getItem(position); Toast.makeText(this, selectedValue, Toast.LENGTH_SHORT).show(); } }
2.5 Demo


Hello There I have creat a ListView just like you listView but I want to set Onclicklistner listView can you Tell me how can I do that.?
How to make this list Fill The Screen, Make all subItems bigger enought to fill the screen as if I gave each one Equal Weight
Thank you for the simple yet useful tutorial
How to include a list under a list
i mean sublisting
thank for this helpful tutorial.
how do i set a the setOnItemClickListener method in order to open a new activity.
regards
How to check whether Wi-Fi internet access is active or not in a device. Take a look at the post:
http://android.programmerguru.com/android-check-wifi-internet-connection/
Hey how to use that list on listfragment. i already make list with same icon in list fragment. but how to make different icon in listfragment?
Thanks. Nice job!
Thanks
In the “res/layout/list_fruit.xml” file, the “TextView” widget has no “Layout” wrapper around it. Can someone explain why. It doesn’t work when I tried to add a “Layout” wrapper around it and try to add a button or other widgets.
I don’t understand how the “TextView” widget gets turned into a “ListView” widget by the “ListFruitActivity.JAVA” activity. Can someone explain how all these magic potions work together and how can I modify the XML to add another WIDGET without using “Adapter”? Still very confusing. Thank you.
In the “res/layout/list_fruit.xml” file, the widget has no wrapper around it. Can someone explain why. It doesn’t work when I tried to add a wrapper around it to add a button or other widgets.
I don’t understand how the becomes a from the ListFruitActivity.JAVA activity. Can someone explain how all these magic potions work together and how to change the XML to add another WIDGET? Still very confusing. Thank you.
Hi, how i put a multiple listviews in one activity(layout) Example:
—————————–(Inicio pantalla)
| List1
| DATA1
| DATA2
|……
| List2
| DATA1
| DATA2
|……
| List3
| DATA1
————————(Fin de pantalla)
| DATA2
|……
| List4
| DATA1
|……
Use a Hashmap or custom Bean Class instead of a String[]
etc.
also, try filling images a cleaner way, little example:
Note
To post source code in comment, uses
tag, for examples :
majde ndjh lsjkeio
thank you very much , can you tell me where I can get tutorial to start new activity from list view?
hi i just want to know what is epub reader could u explain it briefly if possible for u is it done on androi or ios aplication could u provide solution for my problem
Where is your software getting your list titles? I can’t find “List of Fruits” or “List of Mobile OS” anywhere.