CursorAdapter:通过该类可以用Cursor的方式访问数据库,并将查询出来的数据展示到列表视图(ListView)部件上。其中游标携带的结果集中必须有列名为“_id”的列,否则这个类无法工作。

sqlite查询获得Cursor,可以通过CursorAdapter将数据方便的显示在listview上.

使用方法:与BaseAdapter类似,需要重写CursorAdapter中的一些方法

下面用伪代码演示主要步骤:


CursorAdapter:

1.继承适配器:

class Myadapter extends CursorAdapter

2.构造函数://需要传入上下文,游标对象,用于遍历数据

public Myadapter(Context context, Cursor c) {

super(context, c);

}

2.newView():

inflate行布局

3.bindView()

在行布局中显示当前cursor所指向的数据


listview:

1.获得listview实例

ListView listview = findviewbyid(R.id.listview);

2.设置适配器

listview.setAdapter(myadapter);//cursor = db.query();

//myadapter = new Myadapter(this,cursor)


几点思考:

1.学完CursorAdapter后,想起之前学习BaseAdapter时候的优化,便想对其也进行优化,发现CursorAdapter中并没有convertview,而且其将getView分成了newView和bindView,百思不得其解.百度之后才发现,原来系统已经帮我们做了一步优化,其内部代码

public View getView(int position, View convertView, ViewGroup parent) {if (!mDataValid) {throw new IllegalStateException("this should only be called when the cursor is valid");}if (!mCursor.moveToPosition(position)) {throw new IllegalStateException("couldn't move cursor to position " + position);}View v;if (convertView == null) {v = newView(mContext, mCursor, parent);} else {v = convertView;}bindView(v, mContext, mCursor);return v;
}

当convertView==null的时候才去调用newView.

2.如何获得id?

记得CursorAdapter要求我们必须以_id作为主键不?系统帮我们把_id通过getItemId()返回,再传递到一些对象方法中,如:

listView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {db.delete("contact", "_id=?", new String[]{String.valueOf(id)});Cursor cursor = db.query("contact", null, null, null, null, null, null);myadapter.changeCursor(cursor);myadapter.notifyDataSetChanged();Log.e("id", id+"");}});

代码为删除listview点击行显示的表"contact"的数据.long id 即为系统帮我们传递过来的_id.这是通过getItemId()返回的,若要修改id,可以重写此方法.

转载于:https://blog.51cto.com/cpoocp/1392541

学习笔记之CursorAdapter相关推荐

  1. 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner

    目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...

  2. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  3. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  5. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  6. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  7. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  8. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  9. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

  10. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

最新文章

  1. 零基础快速学习Java技术的方法整理
  2. 云计算被视为继计算机,8+第八章+计算机网络技术分析.ppt
  3. go语言游戏编程-Ebiten渲染一张图片
  4. leetcode题解26-删除数组的重复项
  5. Grafana展示DNS解析延时
  6. oracle缓存怎么看,Oracle从缓存里面查找真实的执行计划
  7. 白帽黑客眼中的网络安全 挡黑客财路曾收恐吓信
  8. unity已存在,您无法加载相同的版本
  9. android上方导航条跳转页面,Native Navigation导航组件的使用说明
  10. lf 前后端分离 (5) 优惠券
  11. 清华大学刘知远:在深度学习时代用HowNet搞事情
  12. 电力系统分析设计matlab,电力系统分析课程设计-基于Matlab的电力系统潮流计算...
  13. (中英)作文 —— 标题与小标题
  14. geonode geoserver win10 安装教程(亲测)
  15. 病毒防治:清除***从它的寄生地开始
  16. Python札记 -- 参数魔法
  17. 如何利用Adobe Photoshop制作字幕文件
  18. 算法笔记 胡凡 codeup 数列
  19. [cocos2dx开发技巧4]工具CocosBuilder的使用--复杂动画
  20. 在工业时代为科技发展储备智能型机器人

热门文章

  1. Tp5获取文件,小文件可以获取,大文件获取失败
  2. No package ‘gtksourceview-4‘ found
  3. 柳氏管理学:自己不会,就要勤做笔记
  4. 2021桂花开得真晚,晚了将近一个月
  5. 错误: 程序包org.eclipse.swt.graphics不存在/swt.jar下载方法
  6. 管理新语:员工随口回答,并不是有意忽悠,而是都这样
  7. 编程基本功:找到问题的合理解释,才算解决问题
  8. LINUX下载编译libcurl
  9. mercurial/hg:大哥什么年代了连续传功能都没有?
  10. 不存在理想中的那种单元测试