我有一个编程障碍,我将非常感谢您的帮助。我使用了一个教程来创建我的数据库,我遇到了一个问题,因为我没有正确理解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;
}