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<Map<String, String>> list = new ArrayList<Map<String, String>>();
for (int i = 1; i <= 20; i++) {
Map<String, String> map = new HashMap<String, String>();
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<String> adapter = new ArrayAdapter<String>(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<Map> 的key 要与 String[] 数组相同,否则数据不能显示