Abordagem para preencher a Exibição de lista expansível com o banco de dados SQlite local

9

Eu tenho um banco de dados sqlite no meu aplicativo. Eu quero fazer uma exibição de lista expansível com isso.

Estou determinado com a abordagem que devo seguir para isso.

Tentei muito para encontrar um tutorial para o mesmo, mas não consegui encontrar um único, onde um está preenchendo a lista expansível com o banco de dados local.

Existe este tutorial no site do Android, onde eles estão preenchendo a lista expansível com o detalhe do contato no telefone. Eles estão fazendo isso com o provedor de conteúdo ExpandableList2.java

Então, a minha pergunta é se eu também deveria criar um provedor de conteúdo para meu banco de dados dentro da minha própria aplicação?

Esta é a única abordagem ou existe outra melhor?

    
por Shaista Naaz 20.07.2011 в 13:09
fonte

3 respostas

3

Eu criei um projeto para testar o expandablelistview e o banco de dados, espero que isso ajude

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

    }
    
por ap400200 21.07.2011 / 08:58
fonte
2

Você não precisa criar um provedor de conteúdo para isso.

  1. Crie uma classe DBHelper e crie funções para buscar registros de seu banco de dados local sem um provedor de conteúdo.
  2. Crie uma classe de modelo para armazenar os registros de seu banco de dados local.
  3. Use esta classe de modelo como dados para seu adaptador de lista.
por codeSucks 19.09.2014 / 13:18
fonte
0

Se você tiver um banco de dados local, a melhor abordagem é usar o CursorTreeAdapter, pois ele lida automaticamente com a atualização da lista.

Verifique este post minha ajuda você. ExpansívelListView usando CursorTreeAdapter com fragmento, Provedor de Conteúdo, LoaderCallbacks e CursorLoader

    
por Harsha Vardhan 20.09.2014 / 07:02
fonte