Android: ListView

From Ittichai Chammavanijakul's Wiki
Jump to navigation Jump to search

img_%202011-03-24_01.gif

<source lang="java"> package com.android.sample;

import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.TextView;

public class ListView extends ListActivity { TextView selection; String[] items = { "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory", "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi", "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde" };

@Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.list_view); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items)); selection = (TextView) findViewById(R.id.selection); }

public void onListItemClick(ListView parent, View v, int position, long id) { selection.setText(items[position]); } }

</source>

<source lang="java"> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <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" /> </LinearLayout> </source>

  • Use setListAdapter to set the list adapter wrapping an array of strings.
  • To capture change, use onListItemClick.
  • The android.R.layout.simple_list_item_1 provides the standard Android list row: big font, a lot of padding, and white text.
  • Alternate options:
    • android.R.layout.simple_list_item_single_choice
    • android.R.layout.simple_list_item_multiple_choice

(Use getCheckedItemPositions to capture checked position.)

  • Single-select mode

<source lang="java"> setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, items)); </source>

img_%202011-03-24_04.gif

  • Multiple-select mode

<source lang="java"> setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, items)); </source>

img_%202011-03-24_03.gif