ListActivity

ListActivity is extension of Activity.
It has useful methods to create items of ListView.

Certainly, we don’t need to use ListActivity to add items to ListView.
But if you use ListView in your Activity, you consider use of ListActivity.

Simple Sample

List Item Layout(row.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
     
    <ImageView android:id="@+id/icon"
        android:padding="2dip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/heart"
        android:contentDescription="heart"
    />
     
    <TextView android:id="@+id/label"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="40sp"/>
</LinearLayout>

Main Layout(listexample.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
     
    <TextView android:id="@+id/selection"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
     
    <ListView  android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:drawSelectorOnTop="false"
            android:choiceMode="multipleChoice"/>
 
</LinearLayout>

This has text and listview.

Code

public class ImageListActivity extends ListActivity 
{
    TextView selection;
     
    private static final String[] items = {"Mayuyu", "Paruru", "Rena", "Kojiharu", "Takamina", "Yuko", "Mariko"};
 
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
         
        setContentView(R.layout.listexample);
         
        setListAdapter(new ArrayAdapter<String>(this, R.layout.row, R.id.label, items));
        selection = (TextView)findViewById(R.id.selection);
    }
     
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) 
    {
        selection.setText(items[position]);
    }
}

Result

listview1

Runtime Change Sample

Code

public class DynamicList extends ListActivity 
{
    private static final String[] items = {"Mayuyu", "Paruru", "Rena", "Kojiharu", "Takamina", "Yuko", "Mariko"};
     
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listexample);
         
        setListAdapter(new IconicAdapter());
    }
     
    class IconicAdapter extends ArrayAdapter<String>
    {
        IconicAdapter()
        {
            super(DynamicList.this, R.layout.row, R.id.label, items);       // R.id.label : row's TextView
        }
         
        public View getView(int position, View convertView, ViewGroup parent )
        {
            View row = super.getView(position, convertView, parent);
            ImageView icon = (ImageView)row.findViewById(R.id.icon);
             
            if ( items[position].length() > 5 )
            {
                icon.setImageResource(R.drawable.spade);
            }
            else
            {
                icon.setImageResource(R.drawable.heart);
            }
            return (row);
        }
    }    
}

Results

dynamiclistview