我在使用 CursorAdapter 时遇到了一些问题。
在bindView()
中,我以这种方式检索数据:
final String id = c.getString(c.getColumnIndexOrThrow(MySQLiteHelper.PROF_CONTACTS_KEY_ID));
final String name = c.getString(c.getColumnIndexOrThrow(MySQLiteHelper.PROF_CONTACTS_KEY_NAME));
在这段代码之后,我打电话
Log.e("Log",id+" <=> "+name);
但是,由于一些奇怪的问题,我得到了一个 ID 向前移动了 1。
这是数据库中的情况(从模拟器中拉出来,并用 SQLite 管理器打开它):
这是输出:
更大的数字(>9),ID 开始变得更加混乱:数字 10 变成数字 1,数字 13 变成数字 5,等等。我不会有很多问题,实际上唯一不匹配的是 id ,所有其他信息都对应,但我有一个详细信息活动,我将 ID 传递给该活动,以便向用户显示详细信息。
这是我应用适配器的一段代码:
mCursor = mDb.rawGet("SELECT * FROM "+MySQLiteHelper.PROF_CONTACTS_TB_NAME+" LEFT JOIN "+
MySQLiteHelper.EXAMS_TB_NAME+" ON "+
MySQLiteHelper.PROF_CONTACTS_TB_NAME+"."+MySQLiteHelper.PROF_CONTACTS_KEY_COD_ESAME+"="+
MySQLiteHelper.EXAMS_TB_NAME+"."+MySQLiteHelper.EXAMS_KEY_COD
+ " ORDER BY " + MySQLiteHelper.PROF_CONTACTS_TB_NAME+"."+MySQLiteHelper.PROF_CONTACTS_KEY_ID);
if (mCursor.getCount() == 0) {
// error stuff.
} else {
String[] columns = new String[] {};
int[] to = new int[] {};
mDataAdapter = new CursorAdapterProfContacts(getSherlockActivity(), R.layout.item_prof_contact, mCursor, columns, to, 0);
mLvContacts.setAdapter(mDataAdapter);
}