Android Cursor数据库功能是否会对数据排序产生影响

时间:2015-08-17 06:31:01

标签: android sqlite android-sqlite android-database

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

0 个答案:

没有答案