tutorial recyclerview notifyitemremoved notifyitemchanged how getitemviewtype getitemcount example android android-adapter android-recyclerview notifydatasetchanged

android - notifyitemremoved - recyclerview getitemcount



¿Notifica una llamada sin formato aCreateViewHolder al usar RecyclerView? (4)

Quiero usar un botón para alternar entre dos vistas diferentes pero usando el mismo RecyclerView. Básicamente, una vez que alternas, quiero que el adaptador RecyclerView recupere onCreateViewHolder, pero esta vez usará un archivo de elemento de diseño diferente. ¿ notifydatasetchanged() que el adaptador se reconstruya? ¿O hay otra manera?

Muchas gracias de antemano.


Sí, asumirá que su conjunto de datos actual no es válido y necesitaría retransmitir y volver a enlazar todos los diseños.


Para eliminar y actualizar el diseño en RecyclerView, puede llamar

mRecyclerView.removeView(view);

o

mRecyclerView.removeViewAt(position);

después de eliminar el objeto en su conjunto de datos


notifyDataSetChanged () llama onBindViewHolder() cuando se utiliza RecyclerView


También necesitaba tener dos tipos en View s en mi RecyclerView Adapter , uno para el modo ''regular'' y otro para el modo de selección múltiple.

Por lo tanto, puede anular getItemViewType para forzar al adaptador a llamar a su onCreateViewHolder para todas las vistas.

Agregue esto al código del Adapter :

public void setActionMode(ActionMode actionMode) { this.actionMode = actionMode; notifyDataSetChanged(); } @Override public int getItemViewType(int position) { return (actionMode == null ? 0 : 1); }

Agregue esto al ViewHolder :

@Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view; if (viewType == 0) { view = inflater.inflate(R.layout.layout_1, parent, false); } else { view = inflater.inflate(R.layout.layout_2, parent, false); } ... }

Como devuelve un ViewType diferente cuando está en un ActionMode , el adaptador se ve obligado a descartar todas las vistas creadas y volver a crear todo.