云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 安卓-Junit-文件存储-XML解析方式-数据库-ListView-内容提供者-观察者

安卓-Junit-文件存储-XML解析方式-数据库-ListView-内容提供者-观察者

  • 62 次阅读
  • 3 次下载
  • 2025/6/16 4:28:54

? ?

当点击ListView中的某个item项时,会自动调用getItem( )方法,这时我们可以通过persons.get(position)方法来返回一个Person对象。 getItemId( )一般就返回posion即可,即返回ListView中item项的索引

具体代码在10.SQLite项目中的:

res/layout/main.xml res/layout/item.xml

com.itheima.sqlite包:MainActivityByBaseAdapter

方式二:SimpleAdpter

new SimpleAdapter(Context context, List> data, int resource, String[] from, int[] to)

? ? ? 把persons里的每个Person对象里的属性封装成一个Map,即map.put(“name”,person.getName)的形式转换,一个Person变成一个Map然后把所有的Map存到一个List中,这个List就是上面所需要的data参数。 Resource为item.xml的引用(即R.layout.item),from,为Map里的各个key的值

to指定要resource参数中对应key的值保存到对应的R.id.tv_name中,to是一个数组,就是用来指定所有的R.id… 具体代码在10.SQLite

项目中的:com.itheima.sqlite包:MainActivityBySimpleAdapter

方式三:SimpleCursorAdpter

new SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) ?

这里所需要的参数跟方式二中的类似,Cursor是一个保存了所有Person记录集的对象,也就是说相当于一条记录就是一个Person对象,在这条记录里有name、id、balance等字段。from就是Cursor对象里记录中的字段名

注意:这里要求的Cursor对象必须要有一个名为“ _id ”的字段,要不然就会报错。注意,只是说这个Cursor对象的记录中必须要有而已,并没有说数据库中一定要有这个“_id”字段,因为在执行查询语句时可以给id起一个别名为“_id”,但是在SQLite中有一个不成名的规定:数据库中的id字段一般名为“_id”,所以最好把数据库里的id直接起名为“_id”。 layout是一个item.xml文件的引用:R.layout.item 具体代码在10.SQLite

?

项目中的:com.itheima.sqlite包:MainActivityBySimpleCursorAdapter

总结:

? ?

用第三种方式最方便,因为从数据库里查询数据调用SQLite的rawQuery( )或query( )方法返回的就是一个Cursor。 如果数据不是从数据库查询来的,用第二种方式会比较方便一些。

往ListView中的item项增加监听器

增加监听器: ListView. setOnItemClickListener(OnItemClickListener listener)

这里需要一个OnItemClickListener接口的子类

如果使用的是SimpleCursorAdpter:

private class MyOnItemClickListener implements OnItemClickListener { public void onItemClick(AdapterView parent, View view, int position, long id) {

Cursor c = (Cursor) parent.getItemAtPosition(position); // 得到选中的条目上的Cursor, 这个Cursor已经被移动到选中的位置了

Person p = new Person(c.getInt(0), c.getString(1), c.getInt(2)); // 获取Cursor中的数据, 组装成对象 Toast.makeText(getApplicationContext(), p.toString(), 0).show(); // 弹出

} }

在代码中选择AdapterView然后按Ctrl+T可以查看AdapterView的类继承结果,可以看到的父类是View,它还有一个子类ListView,其实这个prarent参数就是Item项的容器,即ListView对象。

因为SimpleCursorAdpter生成的item项是通过Cursor对象生成的,所以parent.getItemAtPosition(position)返回的当然也就是一个Cursor对象。 而view即所点的LinearLayout(Item项) position为所点击的是第几个

id 一般这个值和position是一样的

具体代码在10.SQLite

项目中的:com.itheima.sqlite包:MainActivityBySimpleCursorAdapter

如果使用的是SimpleAdpter:

private class MyOnItemClickListener implements OnItemClickListener { public void onItemClick(AdapterView parent, View view, int position, long id) { Map map = (Map) parent.getItemAtPosition(position); // 得到选中的条目上的Map Person p = new Person((Integer)map.get(\ // 获取Map中的数据, 组装成对象

Toast.makeText(getApplicationContext(), p.getName(), 0).show(); // 弹出

} }

因为SimpleAdpter生成的item项是通过Map对象生成的,所以parent.getItemAtPosition(position)返回的当然也就是一个Map对象。 具体代码在10.SQLite

项目中的:com.itheima.sqlite包:MainActivityBySimpleAdapter

如果使用的是BaseAdpter:

private class MyOnItemClickListener implements OnItemClickListener { public void onItemClick(AdapterView parent, View view, int position, long id) { Person p = (Person) parent.getItemAtPosition(position); // 得到选中的条目上的Person Toast.makeText(getApplicationContext(), p.toString(), 0).show(); // 弹出

} }

parent.getItemAtPosition(position)的返回值是什么呢?Adpter接口中的getItem( )方法返回的对象,因为之前写的时候返回的是Person所以这里的返回值就是Person,其实使用SimpleAdpter时,内部的getItem()方法返回的就是Map,而使用SimpleCursorAdpter是getItem()返回的是Cursor对象。 具体代码在10.SQLite

项目中的:com.itheima.sqlite包:MainActivityByBaseAdapter

ArrayAdapater

ListView.setAdapter(new ArrayAdapter(this, R.layout.me_item, R.id.fav_title, String[ ]{}));

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

? ? 当点击ListView中的某个item项时,会自动调用getItem( )方法,这时我们可以通过persons.get(position)方法来返回一个Person对象。 getItemId( )一般就返回posion即可,即返回ListView中item项的索引 具体代码在10.SQLite项目中的: res/layout/main.xml res/layout/item.xml com.itheima.sqlite包:MainActivityByBaseAdapter 方式二:SimpleAdpter new SimpleAdapter(Context context, List data, int r

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com