Подход к заполнению расширяемого представления списка локальной базой данных SQlite - PullRequest
9 голосов
/ 20 июля 2011

В моем приложении есть база данных sqlite.Я хочу сделать расширяемый список просмотра с этим.

Я исправлен подходом, который я должен использовать для этого.

Много пытался найти учебник для того же, но не смог найти ни одного, где один заполняет список Expandableс локальной базой данных.

Это одно руководство на сайте Android, где они заполняют расширяемый список контактными данными в телефоне.Они делают это от провайдера контента ExpandableList2.java

Так что мой вопрос, должен ли я также создать провайдера контента для своей базы данных, которая находится внутри моего собственного приложения?

Это единственный подход или есть какой-то другой лучший?

Ответы [ 3 ]

3 голосов
/ 21 июля 2011

Я создал проект, чтобы опробовать расширяемый список и базу данных, надеюсь, это поможет

 final class ExpAdapter extends CursorTreeAdapter {
        LayoutInflater mInflator;

        public ExpAdapter(Cursor cursor, Context context) {
            super(cursor, context);
            mInflator = LayoutInflater.from(context);
        }

        @Override
        protected void bindChildView(View view, Context context, Cursor cursor,
                boolean isLastChild) {
            TextView tvChild = (TextView) view.findViewById(android.R.id.text1);
            tvChild.setText(cursor.getString(cursor
                    .getColumnIndex(DBHelper.COL_TABLE_CHILD_NAME)));
        }

        @Override
        protected void bindGroupView(View view, Context context, Cursor cursor,
                boolean isExpanded) {
            TextView tvGrp = (TextView) view.findViewById(android.R.id.text1);
            tvGrp.setText(cursor.getString(cursor
                    .getColumnIndex(DBHelper.COL_TABLE_MAIN_NAME)));
        }

        @Override
        protected Cursor getChildrenCursor(Cursor groupCursor) {
            int groupId = groupCursor.getInt(groupCursor
                    .getColumnIndex(DBHelper.COL_ID));
            return aDBHelper.getChildCursor(groupId);
        }

        @Override
        protected View newChildView(Context context, Cursor cursor,
                boolean isLastChild, ViewGroup parent) {
            View mView = mInflator.inflate(
                    android.R.layout.simple_expandable_list_item_1, null);
            TextView tvChild = (TextView) mView
                    .findViewById(android.R.id.text1);
            tvChild.setText(cursor.getString(cursor
                    .getColumnIndex(DBHelper.COL_TABLE_CHILD_NAME)));
            return mView;
        }

        @Override
        protected View newGroupView(Context context, Cursor cursor,
                boolean isExpanded, ViewGroup parent) {
            View mView = mInflator.inflate(
                    android.R.layout.simple_expandable_list_item_1, null);
            TextView tvGrp = (TextView) mView.findViewById(android.R.id.text1);
            tvGrp.setText(cursor.getString(cursor
                    .getColumnIndex(DBHelper.COL_TABLE_MAIN_NAME)));
            return mView;
        }

    }
2 голосов
/ 19 сентября 2014

Вам не нужно создавать контент-провайдера для этого.

  1. Создайте класс DBHelper и создайте функции для извлечения записей из локальной базы данных без поставщика контента.
  2. Создайте класс модели для хранения записей из локальной базы данных.
  3. Используйте этот класс модели в качестве данных для адаптера списка.
0 голосов
/ 20 сентября 2014

Если у вас есть локальная база данных, лучше всего использовать CursorTreeAdapter, потому что он автоматически обрабатывает обновление списка.

Проверьте этот пост, я помогу вам. ExpandableListView с использованием CursorTreeAdapter с фрагментом, провайдера контента, LoaderCallbacks и CursorLoader

...