2011-09-08 41 views
0

有没有简单的教程来帮助从sqlite数据创建可扩展列表?来自Sqlite的Android Expandable列表

我有一个叫做categories的表,然后是一个叫做questions的表。如果点击某个类别,则需要显示该类别的问题。

如何将类别ID传递给第二个游标?

任何帮助表示赞赏。

回答

0

我知道这有点旧,但由于它没有答案,我只是想出了一些我正在做的事情,所以我会试着给你一个答案。

您正在寻找的答案在于适配器(特别是重写的getChildrenCursor方法)。基本上你的组光标正在传入,然后你从中提取数据为每个父项创建子游标。

下面是我当前项目的一些示例代码。

集适配器

mAdapter = new MyExpandableListAdapter(mGroupsCursor, getActivity(), 
     R.layout.explistlayout, 
     R.layout.explistlayout, 
     new String[] { "_id" }, 
     new int[] { R.id.text1 }, 
     new String[] { AttendanceDB.EVENT_NAME }, 
     new int[] { R.id.text1 }); 
lv.setAdapter(mAdapter); 

适配器类

public class MyExpandableListAdapter extends SimpleCursorTreeAdapter { 

    public MyExpandableListAdapter(Cursor cursor, Context context, 
      int groupLayout, int childLayout, String[] groupFrom, 
      int[] groupTo, String[] childrenFrom, int[] childrenTo) { 
     super(context, cursor, groupLayout, groupFrom, groupTo, 
       childLayout, childrenFrom, childrenTo); 
    } 
    @Override 
    protected Cursor getChildrenCursor(Cursor groupCursor) { 
     Cursor childCursor = mDbHelper.fetchChildren(groupCursor.getString(groupCursor.getColumnIndex("_id"))); 
     getActivity().startManagingCursor(childCursor); 
     childCursor.moveToFirst(); 
     return childCursor; 
    } 
} 

数据库方法

public Cursor fetchGroup() { 
    String query ="SELECT DISTINCT " + EVENT_DATE + " AS _id FROM " + EVENT_TABLE; 
     return mDb.rawQuery(query,null); 
} 

public Cursor fetchChildren(String dateToken) { 
    return mDb.query(EVENT_TABLE, new String[] { EVENT_ROWID, 
      EVENT_NAME, EVENT_DATE }, EVENT_DATE + "='" + dateToken + "'" , 
      null, null, null, null); 
} 

合这有助于!