ListView的几种使用方法

1.直接继承Activity类,但是要求在layout xml文件中包含一个ListView组件(要求ListView的id是 @android:id/list 或者 @id:android:list),在使用findViewById找到ListView组件,使用ListView的setAdapter方法设置数据适配器

 //自定义的ListActivity 不集成ListView 
 //但是要求其layout文件必须包含一个ListView组件,
 //并且其id是@id/android:list 或者是 @android:id/list

package com.lc.listView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.lc.R;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;


 //1.通过Activity实现
 //自定义的ListActivity 不集成ListView 
 //但是要求其layout文件必须包含一个ListView组件,
 //并且其id是@id/android:list 或者是 @android:id/list (参照 activity_list.xml)

public class ListViewActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_list);

		ListView listView = (ListView) findViewById(android.R.id.list);

		List> list = new ArrayList>();

		for (int i = 1; i <= 20; i++) {
			Map map = new HashMap();

			map.put("title", "this is title of index " + i);
			map.put("message", "this is message of index " + i);

			list.add(map);
		}

		listView.setAdapter(new SimpleAdapter(this, list,
				android.R.layout.two_line_list_item,
				new String[] {"title","message"},
				new int[] {android.R.id.text1,android.R.id.text2}
				));
		

	}
}


2.直接继承ListActivity,该类中集成了一个ListView对象,可以通过getListView得到,并且该Activity默认的Layout xml就是一个只包含ListView组件的布局文件,所以如果不需要定制activity的布局的话,可以不使用setContentView方法设置布局文件,而使用默认的布局 

package com.lc.listView;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

//ListActivity集成了一个 ListView对象

public class ListViewByListActivity extends ListActivity {
	private String cities [] =  {"beijing","qinhuangdao","shanghai"};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,cities);
		
		this.getListView().setAdapter(adapter);
		
	}
}

3.继承ListActivity,并且使用自定义的layout xml ,要求在layout xml文件中包含一个ListView组件(要求ListView的id是 @android:id/list 或者 @id:android:list)

ListView对象可以通过getListView 和 findViewById(android.R.id.list)得到


4.在设置adapter时有2种方式:

1.ListView对象的setAdapter

2.ListActivity对象的setListAdapter

而对于ArrayAdapter 可以设置为android.R.layout.simple_list_item_1(并且本人目前已知只有这一个布局,使用其他布局会报错) 这是一种只有一个TextView的最简单layout

对于SimpleAdapter 要注意其构造函数中参数List 的key 要与 String[] 数组相同,否则数据不能显示

你可能感兴趣的:(ListView的几种使用方法)