2012-07-24 24 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

相关问题