0

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

0 回答 0