EX04_19.java
package irdc.ex04_19; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; public class EX04_19 extends Activity { private static final String[] array = { "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" }; LinearLayout myLinearLayout; TextView myTextView; ListView myListView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 新增LinearLayout */ myLinearLayout = new LinearLayout(this); myLinearLayout.setOrientation(LinearLayout.VERTICAL); myLinearLayout.setBackgroundColor(android.graphics.Color.WHITE); /* 新增TextView */ myTextView = new TextView(this); LinearLayout.LayoutParams param1 = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); myTextView.setText(R.string.title); myTextView.setTextColor(getResources().getColor(R.drawable.blue)); /* 将TextView加到myLinearLayout */ myLinearLayout.addView(myTextView, param1); /* 新增ListView */ myListView = new ListView(this); LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); myListView.setBackgroundColor(getResources().getColor(R.drawable.ltgray)); /* 将ListView加到myLinearLayout */ myLinearLayout.addView(myListView, param2); /* 将LinearLayout加到ContentView */ setContentView(myLinearLayout); /* new ArrayAdapter对象并将array字符串数组传入 */ ArrayAdapter adapter = new ArrayAdapter(this, R.layout.my_simple_list_item, array); /* 将ArrayAdapter加入ListView对象中 */ myListView.setAdapter(adapter); /* myListView加入OnItemSelectedListener */ myListView .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView arg0, View arg1, int arg2, long arg3) { /* 使用getSelectedItem()将选取的值带入myTextView中 */ myTextView.setText("你选的是" + arg0.getSelectedItem().toString()); } @Override public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } }); /* myListView加入OnItemClickListener */ myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { /* 使用String[index],arg2为点选到ListView的index,并将值带入myTextView中 */ myTextView.setText("你选的是" + array[arg2]); } }); } } main.xml
<?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:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
my_simple_list_item.xml
<?xml version="1.0" encoding="utf-8"?> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myCheckedTextView1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@drawable/black" />
color.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <drawable name="black">#000000</drawable> <drawable name="white">#FFFFFFFF</drawable> <drawable name="blue">#0000FF</drawable> <drawable name="ltgray">#CCCCCC</drawable> </resources>
string.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="title">使用ListView显示明细列表</string> <string name="hello">Hello World, empty</string> <string name="app_name">EX04_19</string> </resources>
在添加ArrayAdapter中,使用ArrayAdapter(Context context,int textViewResourceId,T[] objcets)
例外范例中都是动态的构造LinearLayout,TextView,ListView。
如上还有一点可值得一提,可以用ListView里的setChoiceMode,传入的值有三种
ListView.CHOICE_MODE_NONE 0 没有指定选择方式
ListView.CHOICE_MODE_SINGLE 1 最多一个
ListView.CHOICE_MODE_MULTIPLE 2 多选
当ArrayAdapter的构造器textViewResourceId传入Android.R.layout.simple_list_item_multiple_choice,代表ListView是可多选的,此时就需要ListView的setChoiceMode设置了。