列表适配器的使用(以及列表相应的一些监听方法)

一:这个是主页面的代码(主要实现各个列表方法的跳转以及目录):

public class ActivityMain extends Activity {
 OnClickListener listener1 = null;
 OnClickListener listener2 = null;
 OnClickListener listener3 = null;
 OnClickListener listener4 = null;
 Button button1;
 Button button2;
 Button button3;
 Button button4;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  prepareListeners();
  setContentView(R.layout.main);
  button1 = (Button) findViewById(R.id.activity_main_button1);
  button1.setOnClickListener(listener1);
  button2 = (Button) findViewById(R.id.activity_main_button2);
  button2.setOnClickListener(listener2);
  button3 = (Button) findViewById(R.id.activity_main_button3);
  button3.setOnClickListener(listener3);
  button4 = (Button) findViewById(R.id.activity_main_button4);
  button4.setOnClickListener(listener4);


 }
 private void prepareListeners(){
  listener1 = new OnClickListener() {
   public void onClick(View v) {
    Intent intent1 = new Intent(ActivityMain.this, ActivityList1.class);
    startActivity(intent1);
   }
  };
  listener2 = new OnClickListener() {
   public void onClick(View v) {
    Intent intent2 = new Intent(ActivityMain.this, ActivityList2.class);
    startActivity(intent2);

   }
  };
  
  listener3 = new OnClickListener() {
   public void onClick(View v) {
    Intent intent3 = new Intent(ActivityMain.this, ActivityList3.class);
    startActivity(intent3);

   }
  };
  
  listener4 = new OnClickListener() {
   public void onClick(View v) {
    Intent intent4 = new Intent(ActivityMain.this, ActivityList4.class);
    startActivity(intent4);

   }
  };

 }
}

二.下面是列表设置以及适配器的使用

public class ActivityList1 extends Activity {
 ListView listView;
 private String[] data = { "a", "b
   "c", "d", "e",
   "f", "g","h" };
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        listView = new ListView(this);
  //listView.setAdapter(new ArrayAdapter<String>(this,
  //  android.R.layout.simple_list_item_1, data));
  listView.setAdapter(new ArrayAdapter<String>(this,
  android.R.layout.simple_list_item_single_choice, data));
  /*android.R.layout.simple_list_item_1   一行text
           android.R.layout.simple_list_item_2   一行title,一行text
          android.R.layout.simple_list_item_single_choice   单选按钮
            android.R.layout.simple_list_item_multiple_choice   多选按钮
            android.R.layout.simple_list_item_checked    checkbox
*/
        listView.setItemsCanFocus(true);//获取选项的焦点
        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);//选中模式为多重选择(可以选多个)
  setContentView(listView);
    }
}

三.下面是列表键值对的使用以及适配器的使用

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);
 }
}

四.下面是继承ListActivity的列表使用方法

public class ActivityList3 extends ListActivity {


 private String[] data ={"a", "b",
   "c", "d", "e",
   "f", "g","h"
   };
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.list3);
  setListAdapter(new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, data));
  
 }

  protected void onListItemClick(ListView listView, View v, int position, long id) {
      super.onListItemClick(listView, v, position, id);
      setTitle(listView.getItemAtPosition(position).toString());
  }
 
}

以为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>

五.下面是滑动列表监听功能

public class ActivityList4 extends Activity {
 ListView listView;
 private String[] data = { "a", "b", "c",
   "d", "e", "f" };
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  listView = new ListView(this);
  listView.setAdapter(new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, data));
  setContentView(listView);
  OnItemSelectedListener itemSelectedListener = new OnItemSelectedListener(){

   
   public void onItemSelected(AdapterView<?> parent, View arg1,
     int position, long arg3) {
    setTitle("您选中的是:  "+parent.getItemAtPosition(position).toString());
    
   }

   
   public void onNothingSelected(AdapterView<?> arg0) {
    setTitle("");
    
   }
   
  };
  listView.setOnItemSelectedListener(itemSelectedListener);
 }
}

大家可以自己写出自己内定的适配器,这样使用会很方便,也不用每次在代码中声明调用,也可以节约大量的时间以及代码的维护效果!

 

 

 

 

posted @ 2011-10-09 15:29  WangWeiDa  阅读(450)  评论(0编辑  收藏  举报