我有一个编程障碍,非常感谢您的帮助。我使用教程来创建我的数据库,但我遇到了一个问题,因为我没有正确理解该Cursor
功能及其应用程序。我有一个数据库,将联系人和联系人对话存储在两个不同的表中。在我的活动中,我以 DESC 方式对联系人进行了排序。当我单击一个联系人时,它应该打开该联系人的对话(以 asc 方式排序),但它会打开另一个联系人。经过进一步调查,我发现随着联系人的降序显示,contact_id
映射升序,以便为最后一个联系人分配contact_id
第一个联系人的对话,因此当最后一个联系人被点击时,它将显示第一个联系人的对话。我的问题是让contact_id按降序排列以进行正确映射。我的代码如下。提前致谢。
public Cursor getData(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from contacts where id="+id+"", null );
return res;
}
public Cursor getConvData(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from conversation where id="+id+"", null );
return res;
}
public ArrayList<String> getAllCotacts() {
ArrayList<String> array_list = new ArrayList<String>();
//hp = new HashMap();
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from contacts order by id desc", null );
res.moveToFirst();
while(res.isAfterLast() == false){
array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME)));
res.moveToNext();
} return array_list;
}
public ArrayList<String> getAllMsgs(Integer id) { //get all messages for a particular contact
ArrayList<String> array_list = new ArrayList<String>();
//hp = new HashMap();
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from conversation where contact_id= " + id + " order by id asc", null );
res.moveToFirst();
while(res.isAfterLast() == false){
array_list.add(res.getString(res.getColumnIndex(CONVERSATION_COLUMN_MESSAGE)));
res.moveToNext();
} return array_list;
}