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.