9

Tengo una base de datos sqlite en mi aplicación. Quiero hacer una vista de lista ampliable con eso.Método para rellenar la vista de lista ampliable con la base de datos SQlite local

Me arreglé con el enfoque que debería tomar para eso.

Probé mucho para encontrar un tutorial para el mismo, pero no pude encontrar uno solo, donde uno está completando la lista desplegable con la base de datos local.

Este es un tutorial en el sitio de Android donde están llenando la lista ampliable con los detalles de Contacto en el teléfono. Ellos están haciendo esto desde el proveedor de contenidos ExpandableList2.java

Así que mi pregunta es también debería crear un proveedor de contenidos para mi base de datos que está dentro de mi propia aplicación?

¿Es este el único enfoque o hay otro mejor?

+0

¿Qué enfoque finalmente funcionó para usted? Estoy atrapado en un problema similar también. – Swayam

+0

¿Tiene la solución? – silverFoxA

Respuesta

3

que había creado un proyecto para probar expandablelistview y base de datos, espero que esta ayuda

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

    } 
+0

Muchas gracias por su ayuda. Pero parece que no puedo usar mi vista personalizada para el grupo y el niño con CursorApadperTree. ¿¿Es esto cierto?? ¿Y para esto, qué debería usarse? ¿Debo usar SimpleCursorTreeAdapter para eso? Cualquier sugerencia –

+0

Supongo que también debería usar ExpandableListActivity. trabajando en ello –

+0

Muchas gracias por su ayuda, no fue tan difícil ... gracias en toneladas :) –

2

Usted no tiene que crear un proveedor de contenidos para eso.

  1. Cree una clase DBHelper y cree funciones para recuperar registros de su base de datos local sin un proveedor de contenido.
  2. Crea una clase de modelo para almacenar los registros desde tu base de datos local.
  3. Utilice esta clase de modelo como sus datos para su adaptador de lista.
Cuestiones relacionadas