2014-05-13 48 views
-1

我一直在嘗試將近一天來解決這個問題,但我無法弄清楚什麼是錯的。使用SQLite填充ExpandableListAdapter

我得到這個代碼

private void someFunction() {  

    listDataHeader = new ArrayList<String>(); 
    listDataChild = new HashMap<String, List<String>>(); 

    List<String> tempNomoi = new ArrayList<String>(); 

    List<GeneralInfo> diamerismata = db.getAllDiamerismata(); 
    List<GeneralInfo> nomoi = new ArrayList<GeneralInfo>(); 

    for (GeneralInfo a : diamerismata) { 
     listDataHeader.add(a.getDiamerisma()); 

     nomoi = db.GetNomousDiamerismatos(a.getDiamerisma()); 

     tempNomoi.clear(); 

     for (GeneralInfo b : nomoi) { 

      tempNomoi.add(b.getNomo()); 

     } 

     listDataChild.put(a.getDiamerisma(), tempNomoi); 
     System.out.println(listDataChild); 
    } 

} 

我得到這個輸出

I/System.out(5750): SELECT nomos FROM info WHERE diamerisma = 'diamerisma1' 

I/System.out(5750): {diamerisma1=[nomos1, nomos3, nomos5]} 

I/System.out(5750): SELECT nomos FROM info WHERE diamerisma = 'diamerisma2' 

I/System.out(5750): {diamerisma2=[nomos2, nomos4], diamerisma1=[nomos2, nomos4]} 

I/System.out(5750): SELECT nomos FROM info WHERE diamerisma = 'diamerisma3' 

I/System.out(5750): {diamerisma2=[nomos6], diamerisma3=[nomos6], diamerisma1=[nomos6]} 

(在SELECT語句來自負責管理查詢功能)

正如你可以看到輸出,在每個循環之後,數值正在被新的覆蓋...我想要{diamerisma1=[nomos1, nomos3, nomos5], diamerisma2=[nomos2, nomos4], diamerisma3=[nomos6]}

也許有些事我想念HashMaps是如何工作的......我真的很感激,如果有人能指出我錯在哪裏

在此先感謝,感謝您的閱讀!

+0

'也許有件事我懷念包含HashMap如何work'而不是......它似乎你錯過了不創建新對象的觀點並不是創建新對象(所以你使用的是相同的 - 'tempNomoi'實例) – Selvin

+0

@Selvin所以你說我需要和listDataHeader的大小一樣多的對象哈希表工作? – KayKo

+0

嗯,不,我認爲你應該創建tempNomoi的新實例,而不是在循環內清除它...因爲現在你添加相同的實例,但使用不同的鍵(到listDataChild hashmap) – Selvin

回答

0

嗨下面的代碼一些幫助你

View.OnClickListener listOnClick = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     favoriteList = db.getFavList(); 
     listView.setAdapter(new ViewAdapter()); 
     } 
    }; 

//Get FavList 
public List<FavoriteList> getFavList(){ 
    String selectQuery = "SELECT * FROM " + TABLE_TEST; 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    List<FavoriteList> FavList = new ArrayList<FavoriteList>(); 
    if (cursor.moveToFirst()) { 
    do { 
    FavoriteList list = new FavoriteList(); 
    list.setId(Integer.parseInt(cursor.getString(0))); 
    list.setName(cursor.getString(1)); 
    list.setAge(cursor.getString(2)); 
    FavList.add(list); 
    } while (cursor.moveToNext()); 
    } 
    return FavList; 
} 

如果您需要更詳細,請參閱以下鏈接 http://mylearnandroid.blogspot.in/2014/04/android-sqlite-with-custom-listview.html

+0

那麼,這並沒有真正幫助我的問題,因爲我知道如何填充我的列表...我只是堅持使用該HashMap! – KayKo