studio seleccionar recyclerview propiedades item eventos eliminar elemento ejemplo android simplecursoradapter android-recyclerview android-viewholder

android - propiedades - recyclerview seleccionar item



Los métodos de RecyclerView.Adapter onCreateViewHolder y onBindViewHolder no se están llamando (2)

Estoy tratando de implementar TwoWayView en mi proyecto siguiendo el proyecto de ejemplo proporcionado en ese enlace. Implementé todo y mi código funciona sin errores, pero la Lista real no se está inflando. Tras la depuración descubrí que el adaptador está configurado correctamente y el método getItemCount también está devolviendo el conteo positivo, pero los otros dos métodos reemplazados onCreateViewHolder y onBindViewHolder no se están llamando. No tengo idea de por qué no está funcionando. Por favor, consulte el código parcial a continuación, se agradece cualquier ayuda. Gracias.

Clase MyAdapter.java

public class MyAdapter extends RecyclerView.Adapter < MyViewHolder > { private MySimpleCursorAdapter mCursor; //some other private fields here public MyAdapter(Context context, Cursor c, int resourceId, ViewType viewType, String containerId) { mCursor = new MySimpleCursorAdapter(a1,a2,a3,a4,a5,a6); //Passed necessary arguments .... } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { Log.w("onCreateViewHolder", "--------->executed"); //Line not executed final View view = mCursor.newView(mContext, mCursor.getCursor(), parent); return new MyViewHolder(view); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { Log.w("onBindViewHolder", "--------->executed"); //Line not executed mCursor.bindView(holder.itemView, mContext, mCursor.getCursor()); } @Override public int getItemCount() { Log.w("count", Integer.toString(mCursor.getCount())); //This is executed return mCursor.getCount(); } private class MySimpleCursorAdapter extends SimpleCursorAdapter { public MySimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { super(context, layout, c, from, to, flags); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { View view = mLayoutInflater.inflate(mLayoutToInflate, null); .... return view; } @Override public void bindView(final View view, Context context, Cursor cursor) { //Implemented this method for inflating all subviews inside each item of the list } } }

Nota: He pasado por preguntas similares, pero las respuestas proporcionadas no son relevantes para mi pregunta porque mi RecyclerView no está dentro de ScrollView y también getItemCount está devolviendo el conteo positivo.


Creo que olvidó el setLayoutManager(LayoutManager) en la vista de reciclador. Sin el Administrador de diseño, solo se llama a getItemCount() .

Pruebe con yourRecyclerview.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));


Primero, debe mantener una referencia al Contexto cuando se crea una instancia del Adaptador:

public class MyAdapter extends RecyclerView.Adapter < MyViewHolder > { private MySimpleCursorAdapter mCursor; private Context context; // <-- add this line //some other private fields here public MyAdapter(Context context, Cursor c, int resourceId, ViewType viewType, String containerId) { mCursor = new MySimpleCursorAdapter(a1,a2,a3,a4,a5,a6); this.context = context; // <-- add this line //Passed necessary arguments .... }

Luego, en el método onCreateViewHolder, usa esa referencia a Context para crear la vista para ViewHolder:

public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { Log.w("onCreateViewHolder", "--------->executed"); //Line not executed final View view = mCursor.newView(context, mCursor.getCursor(), parent); return new MyViewHolder(view); }

Luego, en su CursorAdapter, infle la vista de la siguiente manera:

public View newView(Context context, Cursor cursor, ViewGroup parent) { View view = LayoutInflater.from(context).inflate(mLayoutToInflate, parent, false); return view; }

Tuve el mismo problema, aunque utilicé una llamada JSON para recuperar los datos en lugar del Cursor Adapter, y estos cambios solucionaron el problema.