簡體   English   中英

如何使用模型類設置Hashmap值

[英]How to set Hashmap value using model class

我想使用數據庫中的數據設置Hashmap值並將其設置在模型類中,它尚不可用,並顯示空數據。 這是我的代碼,從數據庫獲取數據

private ArrayList<Kategori> categories;
private ArrayList<ChatRoom> chatroom_list;
private HashMap<Integer, ArrayList<ChatRoom>> chatrooms;

void getDataList(){
    categories = new ArrayList<>();
    chatrooms = new HashMap<>();
    chatroom_list = new ArrayList<>();
    try{
        categories.clear();
        cursor = db.rawQuery("SELECT * FROM kategori ORDER BY id ASC", null);
        //cursor2 = db.rawQuery("SELECT * FROM chatroom ORDER BY id ASC LIMIT ", null);
        Kategori kategori;
        while (cursor.moveToNext()){
            kategori = new Kategori();
            kategori.setId(cursor.getInt(cursor.getColumnIndex("id")));
            kategori.setNama(cursor.getString(cursor.getColumnIndex("nama")));
            categories.add(kategori);
        }
        listAdapter.notifyDataSetChanged();
    }catch(Exception e){
        e.printStackTrace();
    }
    try{
        chatroom_list.clear();
        chatrooms.clear();
        ChatRoom chatRoom;
        for (int i=0;i<categories.size();i++){
            cursor2 = db.rawQuery("SELECT * FROM chatroom WHERE status = '0' ORDER BY id ASC", null);
            while (cursor2.moveToNext()){
                chatRoom = new ChatRoom();
                chatRoom.setId(cursor2.getInt(cursor2.getColumnIndex("id")));
                chatRoom.setNama(cursor2.getString(cursor.getColumnIndex("nama")));
                chatRoom.setDosen(cursor2.getString(cursor2.getColumnIndex("dosen")));
                chatRoom.setInfo(cursor2.getString(cursor2.getColumnIndex("info")));
                chatRoom.setId_kategori(cursor2.getInt(cursor2.getColumnIndex("id_kategori")));
                if(categories.get(i).getId()==chatRoom.getId_kategori())
                    chatroom_list.add(chatRoom);
            }
            chatrooms.put(categories.get(i).getId(), chatroom_list);
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}

當我檢查它時,Hashmap只會顯示空數據,謝謝!

我想您的錯誤在這里:

if(categories.get(i).getId()==chatRoom.getId_kategori())
    chatroom_list.add(chatRoom);

我猜getId()返回Integer ,這是一個對象。 在大多數情況下,用==比較對象失敗。 當涉及到Integer ,一旦值小於-128或大於127,它就會失敗(盡管可以覆蓋。也有其他情況,使用==比較整數時可能會魔術般失敗或成功。只是不要這樣做) 。

無論如何。 檢查getId()返回IntegerLong 如果是這樣,請將其更改為categories.get(i).getId().equals(chatRoom.getId_kategori())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM