2012-07-24 55 views
0

我的應用程序允許用戶選擇一個類別,然後根據類別輸入其他信息。說他們選擇類別'電子',然後他們可以輸入CD,PS3,iPod等。我有幾個類別,如嗜好,一般,家庭等如何在此Android應用程序中按類別分組項目?

我想按類別排序這樣一個ListView顯示的項目:

Electronics 
-CD 
-PS3 
-iPod 
Books 
-Perl 
-Android is fun 
-C 

等等...

我從使用DB獲取的所有數據:

return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID,KEY_CATEGORY 
       KEY_NAME, KEY_STATUS, KEY_DESCRIPTION}, null, null, null, null, null); 

我也使用rawQuery並使用獨特標記,但是這行不通,因爲它將搭載獨特的項目嘗試。我使用的是simpleCursorAdapter來顯示數據:

SimpleCursorAdapter list = 
    new SimpleCursorAdapter(this, R.layout.items, c, mapFrom, mapTo); 
setListAdapter(list); 

回答

1

我猜你想這樣的:

return mDb.query(DATABASE_TABLE, 
      new String[] {KEY_ROWID, KEY_CATEGORY, KEY_NAME, KEY_STATUS, KEY_DESCRIPTION}, 
      null, null, null, null, 
      KEY_CATEGORY + ", " + KEY_NAME); 

使用參數查詢首先按類別排序,然後名稱訂單。這將使你像一個結果:

Category, Name 
-------------- 
Books, Android is fun 
Books, C 
Books, Perl 
Electronics, CD 
Electronics, iPod 
Electronics, PS3 

如果你只想列出書籍,那麼你只需使用:

return mDb.query(DATABASE_TABLE, 
      new String[] {KEY_ROWID, KEY_CATEGORY, KEY_NAME, KEY_STATUS, KEY_DESCRIPTION}, 
      KEY_CATEGORY + "=?", 
      new String[] {"Books"}, 
      null, null, 
      KEY_NAME); 

當然,如果你只是想顯示的類別和名稱ListView然後你會更有效地縮短你的SELECT子句只有你需要:new String[] {KEY_ROWID, KEY_CATEGORY, KEY_NAME}

從評論

加成爲了得到這樣的結果:

Books 
    Android is fun 
    C 
    Perl 
Electronics 
    CD 
    iPod 
    PS3 

您可以使用ExpandableListView或自行處理光標到List<String>,並通過這一個ArrayAdapter。

+0

謝謝!這看起來不錯:) – infinitloop 2012-07-24 20:48:34

+0

但是有可能得到只是類別的標題說,書籍,然後像Android一樣的所有項目是有趣的,C,Perl等。 – infinitloop 2012-07-25 18:00:39

相關問題