CursorAdapter:

继承于BaseAdapter是个虚类,它为cursor和ListView提供了连接的桥梁.

使用时,Cursor结果集中必须包含列名为“_id”的列,解决方法:

1、修改表结构. 一般建表时都会建立"_id“列为主键

2、查询时使用别名: select personid as _id.

为什么需要”_id“列:在CursorAdapter的init()和changeCursor()中会使用

 void init(Context context, Cursor c, int flags) {        if ((flags & FLAG_AUTO_REQUERY) == FLAG_AUTO_REQUERY) {            flags |= FLAG_REGISTER_CONTENT_OBSERVER;            mAutoRequery = true;        } else {            mAutoRequery = false;        }        boolean cursorPresent = c != null;        mCursor = c;        mDataValid = cursorPresent;        mContext = context;        mRowIDColumn = cursorPresent ? c.getColumnIndexOrThrow("_id") : -1;        if ((flags & FLAG_REGISTER_CONTENT_OBSERVER) == FLAG_REGISTER_CONTENT_OBSERVER) {            mChangeObserver = new ChangeObserver();            mDataSetObserver = new MyDataSetObserver();        } else {            mChangeObserver = null;            mDataSetObserver = null;        }        if (cursorPresent) {            if (mChangeObserver != null) c.registerContentObserver(mChangeObserver);            if (mDataSetObserver != null) c.registerDataSetObserver(mDataSetObserver);        }    }

(1)newView:并不是每次都被调用的,它只在实例化的时候调用,数据增加的时候也会调用,但是在重绘(比如修改条目里的TextView的内容)的时候不会被调用 (2)bindView:从代码中可以看出在绘制Item之前一定会调用bindView方法它在重绘的时候也同样被调用

引用:

Android之CursorAdapter用法

http://www.bubuko.com/infodetail-734550.html



更多相关文章

  1. Android(安卓)插件化分析(3)- Activity启动流程
  2. android 手机欢迎界面不显示的问题?
  3. android语言三
  4. 【Android(安卓)Developers Training】 16. 暂停和恢复一个Activ
  5. Android(安卓)调用系统相机拍照并获取图片
  6. android与H5交互方法简介
  7. Unity调用Android。。。哈哈。。可以干坏事啦。。。。。。
  8. android APK 调用G—sensor驱动的过程
  9. 禁止其他应用访问自己的组件

随机推荐

  1. TextView内容太长怎么办?
  2. android 开发中遇到的问题及解决方法
  3. android学习笔记---59_各种图形的使用介
  4. Android Map API key 申请
  5. Android新特性v7 - CardView
  6. androidのadb input使用
  7. android app界面背景替换
  8. frida进阶-Android逆向之旅---Hook神器家
  9. 解决 Android Studio : minSdkVersion 8
  10. Android(安卓)6.0(API 23)及以上动态权限