Подход к заполнению расширенного списка с локальной базой данных SQlite

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

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

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

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

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

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

Solutions Collecting From Web of "Подход к заполнению расширенного списка с локальной базой данных SQlite"

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

  Final class ExpAdapter расширяет CursorTreeAdapter {
         LayoutInflater mInflator;

         Public ExpAdapter (курсор, контекст контекста) {
             Супер (курсор, контекст);
             MInflator = LayoutInflater.from (контекст);
         }

         @Override
         Protected void bindChildView (View view, контекстный контекст, курсор,
                 Boolean isLastChild) {
             TextView tvChild = (TextView) view.findViewById (android.R.id.text1);
             tvChild.setText (cursor.getString (курсор
                     .getColumnIndex (DBHelper.COL_TABLE_CHILD_NAME)));
         }

         @Override
         Protected void bindGroupView (просмотр вида, контекст контекста, курсор курсора,
                 Boolean isExpanded) {
             TextView tvGrp = (TextView) view.findViewById (android.R.id.text1);
             tvGrp.setText (cursor.getString (курсор
                     .getColumnIndex (DBHelper.COL_TABLE_MAIN_NAME)));
         }

         @Override
         Защищенный курсор getChildrenCursor (курсор groupCursor) {
             Int groupId = groupCursor.getInt (groupCursor
                     .getColumnIndex (DBHelper.COL_ID));
             Return aDBHelper.getChildCursor (groupId);
         }

         @Override
         Protected Просмотреть newChildView (контекст контекста, курсор курсора,
                 Boolean isLastChild, родитель ViewGroup) {
             Просмотреть 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 (курсор
                     .getColumnIndex (DBHelper.COL_TABLE_CHILD_NAME)));
             Return mView;
         }

         @Override
         Protected Просмотреть newGroupView (контекст контекста, курсор курсора,
                 Boolean isExpanded, родительский элемент ViewGroup) {
             Просмотреть 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 (курсор
                     .getColumnIndex (DBHelper.COL_TABLE_MAIN_NAME)));
             Return mView;
         }

     }

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

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

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

Проверьте этот пост, я вам помогу. ExpandableListView с использованием CursorTreeAdapter с помощью фрагмента, Content Provider, LoaderCallbacks и CursorLoader