CursorAdapter para varias tablas

24 views
Skip to first unread message

gugra

unread,
Apr 2, 2016, 10:31:07 AM4/2/16
to desarrolladores-android
Hola.
Tengo una base de datos con un content provider. La db tiene 6 tablas. Tengo que hacer listados de todas las tablas. Uso loaders y de momento tengo un CursorAdapter para una tabla que funciona bien. No encuentro la manera de pasarle una variable para que identifique las otras tablas. ¿Necesito un cursorAdapter para cada tabla?
Este es mi código de la clase CursorAdapter:

public class ActivitiesAdapter extends CursorAdapter {

public ActivitiesAdapter(Context context) {
super(context, null, 0);
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView categ_list = (TextView) view.findViewById(R.id.categ_list_text);
categ_list.setText(cursor.getString(cursor.getColumnIndex(lajesContract.CategoriasEntry.CAT_CGT)));
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
return inflater.inflate(R.layout.item_layout, null, false);
}
}
Como se puede ver, el bindView llena la lista con los datos de la tabla lajesContract.CategoriasEntry.CAT_CGT
¿Como puedo pasarle otras tablas?
Gracias.

Javier ExpoCode

unread,
May 23, 2016, 11:08:26 AM5/23/16
to desarrolladores-android
Hola,

Para lograr lo que buscas, puedes crearte un nuevo Constructor el cual aparte del Context reciba también el nombre de la tabla y crearte una variable miembro llamada por ejemplo mTableName en la cual almacenas el valor que viene por parámerto del nuevo Constructor

Por lo que tu Adapter quedaría así:

public class ActivitiesAdapter extends CursorAdapter {
   
   
private String mTableName;


   
public ActivitiesAdapter(Context context) {
       
super(context, null, 0);
    }

    public ActivitiesAdapter(Context context, String tableName) {
       
super(context, null, 0);
       mTableName = tableName;
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
       
TextView categ_list = (TextView) view.findViewById(R.id.categ_list_text);
        categ_list.setText(cursor.getString(cursor.getColumnIndex(mTableName)));
    }

   
@Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
       
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        return inflater.inflate(R.layout.item_layout, null, false);
    }
}


Espero que con esto puedas avanzar en tu proyecto y cualquier duda por aquí estaremos.

Happy Coding!
Reply all
Reply to author
Forward
0 new messages