2011-09-08 66 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); 
} 

合這有助於!