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); } }
引用:
Android之CursorAdapter用法
http://www.bubuko.com/infodetail-734550.html