Android手机开发:ListView的使用


1. 简单的列表

  1. import Android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.widget.ArrayAdapter;  
  4. import android.widget.ListView;  
  5.   
  6. public class ActivityList1 extends Activity {  
  7.     ListView listView;  
  8.     private String[] data = { "Android应用专业开发社区:eoeAndroid.com""eoeAndroid出品软件如下:",  
  9.             "eoeInstaller""eoeDouban""eoeWhere",  
  10.             "eoeInfoAssistant""eoeDakarGame","eoeTrack" };  
  11.     @Override  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         listView = new ListView(this);  
  15.     listView.setAdapter(new ArrayAdapter<String>(this,  
  16.         android.R.layout.simple_list_item_1, data));      
  17.         listView.setItemsCanFocus(true);  
  18.         listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);  
  19.     setContentView(listView);  
  20.     }  
  21. }  
setAdapter函数将listView和ArrayAdapter进行绑定,listView会把ArrayAdapter中的数据显示出来。

2. 每一项可以包含多个View的列表

  1. import java.util.ArrayList;  
  2. import java.util.HashMap;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.widget.AdapterView;  
  10. import android.widget.ListView;  
  11. import android.widget.SimpleAdapter;  
  12. import android.widget.AdapterView.OnItemClickListener;  
  13.   
  14. public class ActivityList2 extends Activity {  
  15.   
  16.     private List<Map<String, Object>> data;  
  17.     private ListView listView = null;  
  18.   
  19.     @Override  
  20.     public void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         PrepareData();  
  23.         listView = new ListView(this);  
  24.         // 利用系统的layout显示一项   
  25. //       SimpleAdapter adapter = new SimpleAdapter(this, data,   
  26. //       android.R.layout.simple_list_item_1, new String[] { "姓名" },   
  27. //       new int[] { android.R.id.text1 });   
  28.         // 利用系统的layout显示两项   
  29. //       SimpleAdapter adapter = new SimpleAdapter(this, data,   
  30. //       android.R.layout.simple_list_item_2, new String[] { "姓名","性别" },   
  31. //       new int[] { android.R.id.text1 , android.R.id.text2});   
  32.         // 利用自己的layout来进行显示两项   
  33.         SimpleAdapter adapter = new SimpleAdapter(this, data,  
  34.                 R.layout.list_item, new String[] { "姓名""性别" }, new int[] {  
  35.                         R.id.mview1, R.id.mview2 });  
  36.         listView.setAdapter(adapter);  
  37.         setContentView(listView);     
  38.           
  39.         OnItemClickListener listener = new OnItemClickListener() {  
  40.             public void onItemClick(AdapterView<?> parent, View view, int position,  
  41.                     long id) {  
  42.                 setTitle(parent.getItemAtPosition(position).toString());  
  43.             }  
  44.         };  
  45.         listView.setOnItemClickListener(listener);  
  46.     }  
  47.   
  48.     private void PrepareData() {  
  49.         data = new ArrayList<Map<String, Object>>();  
  50.         Map<String, Object> item;  
  51.         item = new HashMap<String, Object>();  
  52.         item.put("姓名""张三小朋友");  
  53.         item.put("性别""男");  
  54.         data.add(item);  
  55.         item = new HashMap<String, Object>();  
  56.         item.put("姓名""王五同学");  
  57.         item.put("性别""男");  
  58.         data.add(item);  
  59.         item = new HashMap<String, Object>();  
  60.         item.put("姓名""小李师傅");  
  61.         item.put("性别""女");  
  62.         data.add(item);  
  63.     }  
  64. }  
R.layout.list_item文件内容如下:
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical" android:layout_width="fill_parent"  
  4.     android:layout_height="wrap_content">  
  5.     <TextView android:id="@+id/mview1" android:layout_width="100px"  
  6.         android:layout_height="wrap_content" />  
  7.   
  8.     <TextView android:id="@+id/mview2"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content" />  
  11.   
  12. </LinearLayout>  
3. 直接继承ListActivity类的列表
  1. import android.app.ListActivity;  
  2. import android.os.Bundle;  
  3. import android.view.View;  
  4. import android.widget.ArrayAdapter;  
  5. import android.widget.ListView;  
  6.   
  7.   
  8. public class ActivityList3 extends ListActivity {  
  9.         
  10.     private String[] data ={};  
  11.     public void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.list3);  
  14.         setListAdapter(new ArrayAdapter<String>(this,  
  15.                 android.R.layout.simple_list_item_1, data));  
  16.           
  17.     }  
  18.   
  19.      protected void onListItemClick(ListView listView, View v, int position, long id) {  
  20.             super.onListItemClick(listView, v, position, id);  
  21.             setTitle(listView.getItemAtPosition(position).toString());  
  22.      }    
  23. }  
上面的data数组,存放要显示的数据。

R.layout.list3内容如下:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content">  
  5.     <ListView android:id="@id/android:list"  
  6.         android:layout_width="fill_parent"  
  7.         android:layout_height="fill_parent"/>  
  8.     <TextView android:id="@id/android:empty"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="对不起,没有数据显示"/>        
  12. </LinearLayout> 

相关内容