使用ExpandableListActivity顯示擴展列表
上次我們講了使用SQLite數據庫存儲數據,那麼我們存儲在SQLite數據庫中的數據如和將它顯示在Android客戶端呢?這裏我們使用ExpandableListActivity將數據顯示在Android客戶端。
我們的工程使用上次SQLite存儲數據的那個例子使用SQLite數據庫存儲數據,完成效果:![]()
之前SQLite數據庫中的數據:![]()
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ExpandableListView
android:id="@id/android:list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
MainActivity類:public class MainActivity extends ExpandableListActivity {
private ExpandableListAdapter myAdapter;
private DBOpenHelper dbOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dbOpenHelper = new DBOpenHelper(MainActivity.this);
// 查詢組數據
Cursor groupCursor = queryGroupCursor();
myAdapter = new MyExpandableListerAapter(MainActivity.this,
groupCursor, android.R.layout.simple_expandable_list_item_1,
android.R.layout.simple_expandable_list_item_1,
new String[] { "typeName" }, new int[] { android.R.id.text1 },
new String[] { "name" }, new int[] { android.R.id.text1 });
setListAdapter(myAdapter);
}
private Cursor queryGroupCursor() {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor groupCursor = db.query("MenuTbl",
new String[] { "distinct typeName" }, null, null, null, null,
null);
return groupCursor;
}
public class MyExpandableListerAapter extends SimpleCursorTreeAdapter {
public MyExpandableListerAapter(Context context, Cursor cursor,
int groupLayout, int childLayout, String[] groupFrom,
int[] groupTo, String[] childFrom, int[] childTo) {
super(context, cursor, groupLayout, groupFrom, groupTo,
childLayout, childFrom, childTo);
}
@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
String typeName = groupCursor.getString(groupCursor
.getColumnIndex("typeName"));
System.out.println(typeName);
// 查詢子數據
Cursor childCursor = queryChildCursor(typeName);
return childCursor;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
Cursor childCursor = (Cursor) getChild(groupPosition, childPosition);
return childCursor.getLong(0);
}
@Override
public long getGroupId(int groupPosition) {
Cursor groupCursor = (Cursor) getGroup(groupPosition);
return groupCursor.getLong(0);
}
private Cursor queryChildCursor(String typeName) {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor childCursor = db.query("MenuTbl", new String[] { "name" },
"typeName=\"" + typeName + "\"", null, null, null, null);
return childCursor;
}
}
}