ListView

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,将警告信息显示出来。

     今天先学习到这,谢谢!

你可能感兴趣的:(ListView)