package com.eoeAndroid.list; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.AdapterView.OnItemClickListener; public class ActivityList2 extends Activity { private List<Map<String, Object>> data; private ListView listView = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PrepareData(); listView = new ListView(this); // 利用系统的layout显示一项 // SimpleAdapter adapter = new SimpleAdapter(this, data, // android.R.layout.simple_list_item_1, new String[] { "姓名" }, // new int[] { android.R.id.text1 }); // 利用系统的layout显示两项 SimpleAdapter adapter = new SimpleAdapter(this, data, android.R.layout.simple_list_item_2, new String[] { "姓名","性别" }, new int[] { android.R.id.text1 , android.R.id.text2}); // 利用自己的layout来进行显示两项 // SimpleAdapter adapter = new SimpleAdapter(this, data, // R.layout.list_item, new String[] { "姓名", "性别" }, new int[] { // R.id.mview1, R.id.mview2 }); listView.setAdapter(adapter); setContentView(listView); OnItemClickListener listener = new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { setTitle(parent.getItemAtPosition(position).toString()); } }; listView.setOnItemClickListener(listener); } private void PrepareData() { data = new ArrayList<Map<String, Object>>(); Map<String, Object> item; item = new HashMap<String, Object>(); item.put("姓名", "张三小朋友"); item.put("性别", "男"); data.add(item); item = new HashMap<String, Object>(); item.put("姓名", "王五同学"); item.put("性别", "男"); data.add(item); item = new HashMap<String, Object>(); item.put("姓名", "小李师傅"); item.put("性别", "女"); data.add(item); } }
本次学习需要注意的地方:
1 需要为ListView添加适配器。listView.setAdapter(adapter);
2 适配器有多种,本例中使用的是SimpleAdapter。
第一种:listView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_single_choice, data));
第二种:SimpleAdapter adapter = new SimpleAdapter(this, data,
android.R.layout.simple_list_item_2, new String[] { "姓名","性别" },
new int[] { android.R.id.text1 , android.R.id.text2});
3 SimpleAdapter在初始化过程中,可以通过修改参数来设置不同的显示方式。上述代码中,就列举了三种显示方式。
4 下一步需要关注的就是监听函数。针对功能不同,有不同的监听函数。
第一种:OnItemClickListener listener; //单击Item时调用
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
setTitle(parent.getItemAtPosition(position).toString());
}
第二种:OnItemSelectedListener itemSelectedListener; //选中Item时调用
public void onItemSelected(AdapterView<?> parent, View arg1,
int position, long arg3) {
setTitle("您选中的软件是: "+parent.getItemAtPosition(position).toString());
}
5 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"> <ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent"/> <TextView android:id="@id/android:empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="对不起,没有数据显示"/> </LinearLayout>
需要注意的是,ListView的id,使用的是"@id/android:list",即系统默认的id,而紧接其后的TextView,使用的id也是系统默认的,即"@id/android:empty"。所以当ListView为空时,系统会自动调用下面的TextView,将警告信息显示出来。
今天先学习到这,谢谢!