Android的笔记之listview2

来源:互联网 发布:中文翻译拼音软件 编辑:程序博客网 时间:2024/06/10 22:22

1、activity:

用于显示用户界面,是View的容器。

首先通过在oncreate中setcontentView指定总布局,

这个布局也是一个容器,其中有各种组件,而每个组件又是一个View容器。

2、处理item的点击事件:

mListView.setOnItemClickListener(new OnItemClickListener() {
/**
* parent 代表的是当前的listview 
* view 代表的当前被点击条目对应的view对象 
* position当前条目在listview中的位置 
* id 行号 一般与position 相同的
*/
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
/*
* 方法1 
* TextView tv_name = (TextView)view.findViewById(R.id.tv_name); 
* String name =tv_name.getText().toString(); 
* Toast.makeText(DbActivity.this,name, Toast.LENGTH_LONG).show();
*/
/*
* 方法2 
* String name = persons.get(position).getName();
* Toast.makeText(DbActivity.this, name,Toast.LENGTH_LONG).show();
*/

Person object = (Person) parent.getItemAtPosition(position);
String name = object.getName();
Toast.makeText(DbActivity.this, name, Toast.LENGTH_LONG).show();
}
});
}

这段代码在上一篇博客中。

3、其他adapter的使用:

(1)simpleadapter

这里需要一个list<map>类型:

List<Map<String, String>> data = new ArrayList<Map<String, String>>();
for (Person person : persons) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", person.getName());
map.put("age", person.getAge() + "");
data.add(map);
}


mListView.setAdapter(new SimpleAdapter(DbActivity.this, data, R.layout.item,
new String[]{"name","age"}, new int[]{R.id.tv_name,R.id.tv_age}));

(2)arrayadapter

这里需要一个String[]类型

arrayadapter每个item只能产生一个显示项,这里名字。

for(int i=0;i<persons.size();i++){
personarr[i]= persons.get(i).getName();
}

mListView.setAdapter(new ArrayAdapter<String>(DbActivity.this, R.layout.item, R.id.tv_name, personarr));

(3)simplecursoradapter:

Cursor c = dao.findAllbyCursor();

注意:在findallbycursor中不要关闭数据库。

mListView.setAdapter(new SimpleCursorAdapter(this, R.layout.item, c,
new String[] { "name", "age" }, new int[] { R.id.tv_name,
R.id.tv_age }));



SQLite数据库标准:

要求数据库的主键最好以_id为名。

public Cursor findAllbyCursor() {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
if (db.isOpen()) {
/*Cursor cursor = db.query("person", null, null, null, null, null,
null);*/
Cursor cursor = db.rawQuery("select personid as _id,age,name from person", null);
return cursor;
// 注意了  一定不要把数据库 关闭了 
}
return null;
}


0 0