技术开发 频道

Android学习笔记:ListView

  【IT168技术】今天主要是学习了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(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,将警告信息显示出来。

     今天先学习到这,谢谢!

0
相关文章