来自Sqlite的Android可扩展列表

时间:2011-09-08 23:03:19

标签: java android

是否有任何简单的教程可以帮助从sqlite数据创建可扩展列表?

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

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

任何帮助表示感谢。

1 个答案:

答案 0 :(得分: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);
}

希望这有帮助!