Cuando getItemCount y método getItemViewType se llaman en Recycler Adapter
Vi preguntas similares en stackoverflow pero no dan respuestas claras a mi pregunta. No lo marque como dublicate antes de leer mis preguntas completas. Vi este enlace, esto , y esto también. Gracias por dedicar su tiempo a leer esto.
Le di mis tres preguntas por debajo del código fuente, por favor, eche un vistazo a él.
- RecyclerView con fragmentos
- Transición de elementos compartidos de Android entre fragmentos con vista de reciclaje y detalles
- ¿Cómo puedo obtener la posición seleccionada en un RecyclerView?
- El evento RecyclerView onScrollStateChanged / onScrolled no se activa cuando no se ha producido desplazamiento
- Android Recycler filtro adaptador de vista con animación
Lo haré simple. Estoy intentando utilizar dos ViewHolder en el adaptador del reciclador que voy a utilizar en ViewPager para TabLayout. Ambos View Holder teniendo diferentes Xml y diferentes elementos (es decir, textview, etc vista de la imagen) Pero se golpeó con varias confusiones dentro de él.
Implementé mi clase de adaptador RecyclerView de la siguiente manera
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public class MainViewHolder extends RecyclerView.ViewHolder { public MainViewHolder(View v) { super(v); } class ViewHolder0 extends MainViewHolder { ... } class ViewHolder2 extends MainViewHolder { ... } @Override public int getItemViewType(int position) { /**** I don't know where and when this method will be called and what will be the value present in the variable "position" ****/ } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case 0: return new ViewHolder0(...); case 2: return new ViewHolder2(...); ... } } public int getItemCount() { /**** I don't know where and when this method will be called and what will be the value present in the variable "position" ****/ } }
Y mis preguntas son,
Q1. Cuándo y dónde se llama getViewType y qué será en la variable " position " y qué necesitamos devolver
Q2. Cuándo y dónde se llama getItemCount y cómo puedo devolver correctamente (porque estoy usando dos titulares de vista y cada uno tendrá diferente cuenta )
Q3. He creado la clase Recyclerview Adapter, pero dio un error que la clase RecyclerViewAdapter choca con la otra. (Ya que los estoy utilizando en la misma actividad para TabLayout, pensé que el error fue lanzado, ¿estoy correcto? O hay alguna manera de crear la clase de adaptador separado)
Si usted puede explicar todo el proceso de RecyclerViewAdapter, que sería genial 🙂 Pero por favor aclare mis confusiones anteriores.
Cualquier tipo de ayuda bienvenida, Gracias de antemano … 🙂
- Cómo decorar selectivamente los elementos de RecyclerView
- El adaptador de RecyclerView notifyDataSetChanged no funciona
- Lista 2D con RecyclerView en HorizontalScrollView
- Firebase UI RecyclerView onClick
- Recyclerview dolorosamente lento para cargar imágenes en caché de Picasso
- NotifyDataSetChanged- RecyclerView -¿Es una llamada asincrónica?
- Android: entradas en recyclerview
- RecyclerView con GridLayoutManager intentando resolver wrap_content
Q1) El método getViewType () se llamará antes del método onCreateViewHolder () cada vez que se crea su vista personalizada.
Necesita crear una lista con sus elementos de lista personalizada List<CustomItem> list=method_to_return_your_list()
y cada uno de ellos con un método get getType () getter.
En su obtener getItemViewType ()
public int getItemViewType(int position) { return list.get(position).getViewType(); /*this returns the view type of each element in the list*/ }
Esto puede ser 0 o 1 teniendo en cuenta la instrucción switch case en el método onCreateViewHolder ()
Q2) El método getItemCount () debe devolver el número de elementos de la lista.
public int getItemCount() { return list.size(); }
Q3) No cree otro adaptador de reciclaje para la misma vista de reciclaje
También yo fogot. En lugar de crear nuevos ViewHolders, simplemente cambie el itemView en el titular de la vista como
@Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case 0: return new ViewHolder(itemView0); case 2: return new ViewHolder(itemView1); ... } }
- Registro de errores no fatales en Crashlytics
- Instalar los complementos IntelliJ de Ultimate edition en Android Studio