使用ExpandableListActivity顯示擴展列表

使用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;
		}
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章