天天看点

[Android] ListView (普通列表控件) 的基本使用方法

        在Android中,ListView控件用于以列表的形式显示数据,采用MVC模式将前端显示与后端数据进行分离。如下图所示,ListView控件并不直接使用数据,而是间接通过Adapter对象。

所以,ListView控件的使用,一般需要进行两步绑定:

        · 数据和Adapter的绑定:如下图中(1)

        · Adapter和ListView的绑定:如下图中(2)

[Android] ListView (普通列表控件) 的基本使用方法

        代码中,ArrayAdapter的构造方法需要三个参数,本例中第一个参数使用当前Activity的对象实例,第二个参数指定布局文件的资源ID,第三个参数指定列表项中的数据。

        使用ListView,可根据需要实现相关接口,常用的有OnItemClickListener(当列表项被点击时触发)和OnItemSelectListener(当列表项被选中时触发)。

代码:

(1) MainActivity.java

package com.fergusworkroom.demo_listview;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity implements OnItemClickListener, OnItemSelectedListener{
	
	private static String[] data = new String[]{
		"大连",
		"沈阳",
		"北京",
		"哈尔滨",
		"杭州",
		"呼和浩特",
		"齐齐哈尔",
		"城市,是以非农业产业和非农业人口集聚形成的较大居民点(包括按国家行政建制设立的市、镇)。一般而言,人口较稠密的地区称为城市(city),一般包括了住宅区、工业区和商业区并且具备行政管辖功能。"
	};

	private TextView selectedItemInfo;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ListView commonListView = (ListView)findViewById(R.id.commonListView);
        selectedItemInfo = (TextView)findViewById(R.id.selectedItemInfo);
        
        // (1) Adapter  <--> Data
        ArrayAdapter<String> aaData = new ArrayAdapter<String>(this,
        		android.R.layout.simple_list_item_1, data);
        
        // (2) ListView <--> Adapter
        commonListView.setAdapter(aaData);
        
        // (3) 设置相关响应函数
        commonListView.setOnItemClickListener(this);
        commonListView.setOnItemSelectedListener(this);
    }

	public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
			long arg3) {
		// TODO Auto-generated method stub
		selectedItemInfo.setText("Item selected: " + arg2 + ", " + arg3);
	}

	public void onNothingSelected(AdapterView<?> arg0) {
		// TODO Auto-generated method stub
		selectedItemInfo.setText("Nothing selected");
	}

	public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
		// TODO Auto-generated method stub
		selectedItemInfo.setText("Item clicked: " + arg2 + ", " + arg3);
	}
}
           

(2) activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView 
        android:id="@+id/selectedItemInfo"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:text="所选信息" />
    <ListView
        android:id="@+id/commonListView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
           

参考文献:

[1] 李宁. Android开发权威指南[M].北京:人民邮电出版社.