2015-11-03 40 views
0

這是我根據最新 文字信息第一,但似乎沒有工作,查詢獲取我的用戶的功能。任何人可以幫我 在這裏。如何獲取爲了聊天列表與最新的聊天先使用SQLite和Android

public HashMap<String, String> show_chat_list (String uid){ 

      HashMap<String, String> friend_list = new HashMap<String, String>(); 

這裏是獲取從事 聊天的用戶名查詢

String selectQuery = "select * from friendlist where _id in (select com_id from chat_list order by _id desc)"; 

      SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     // Move to first row 
     boolean st = cursor.moveToFirst(); 


     if (st == true) { 
      if (cursor.moveToFirst()) { 
       do { 


        cfrname += cursor.getString(cursor.getColumnIndex("name")) + ":"; 
        friend_list.put("frname", cfrname); 

        cfruid += cursor.getString(cursor.getColumnIndex("_id")) + ":"; 
        friend_list.put("fruid", cfruid); 

        badger += cursor.getString(cursor.getColumnIndex("badger")) + ":"; 
        friend_list.put("badger", badger); 

        cfrthumb += cursor.getString(cursor.getColumnIndex("thumb")) + ":"; 
        friend_list.put("frthumb", cfrthumb); 


       } 
       while (cursor.moveToNext()); 
      } 
     } else { 

      friend_list.put("frname", "notdatainsql"); 
      friend_list.put("fruid", "notdatainsql"); 
      friend_list.put("frthumb", "notdatainsql"); 
      friend_list.put("badger", "notdatainsql"); 
     } 


     cursor.close(); 
     db.close(); 
     return friend_list; 
    } 
+0

您的sql查詢應該能夠以正確的順序返回您的數據 – Nanoc

+0

不,它不顯示數據存儲在表中的順序friend_list @Nanoc –

+0

然後,我認爲你應該修改你的sql字符串符合你的需求。 – Nanoc

回答

-1

日期使用比較排序消息或任何其他字段

Collections.sort(listMsg, new Comparator<MessageInfo>() { public int compare(MessageInfo o1, MessageInfo o2) { if (o1.Datetime == null || o2.Datetime == null) return 0; return o1.Datetime.compareTo(o2.Datetime); } });

在佈局文件添加以下代碼:

機器人:stackFromBottom = 「真」
機器人:transcriptMode = 「alwaysScroll」

+0

這似乎是一個非常糟糕的主意,有一個SQL數據庫,依賴項目排序,而不是使用你建議的SQL的力量以未定義的順序將所有項目提取到內存中,並使用Java代碼對其進行排序。這應該是最後的手段。 – JHH

+0

此外,操作似乎想要列表或人員,按每個用戶最近的消息的順序排序,而不是消息列表。有兩個表涉及。 – JHH

+0

名單*的人(不能編輯評論) – JHH

1

你的SQL查詢不提供任何順序全部:

select * from friendlist where _id in (select com_id from chat_list order by _id desc) 

此處的順序未定義在您的返回d結果集,而是用於僅用於創建後續掃描以創建返回結果集的ID集的子查詢。您返回的結果集的順序基本上是未定義的。

你應該能夠解決這個使用是這樣的:

select friendlist.* 
    from friendlist 
    join chatlist on friendlist._id=chatlist.com_id 
    group by chatlist.com_id 
    order by chatlist._id desc; 

-

PS。這個問題並不真正相關,但我很好奇你爲什麼選擇用鍵值的HashMap表示每個項目,而不是創建描述數據結構的適當對象。你目前的代碼似乎很容易出錯,很難調試,並且需要大量使用字符串常量。

+0

謝謝......幫助我.... –