Cómo agregar una vista dinámica entre los elementos de RecyclerView en android?

Necesito agregar una tira pequeña entre los elementos de un RecyclerView. Esta tira puede venir después del número diferente de artículos en una lista. Esto debe hacerse dinámicamente. Necesito implementar algo como lo que FitBit ha hecho: Introduzca aquí la descripción de la imagen

También necesito la primera fila es decir el que dice "esta semana" para pegarse en la tapa incluso si la página se desplaza abajo.

Usar la biblioteca StickyHeaderRecyclerView

Es muy fácil de usar

Debe utilizar el concepto de diferentes tipos de vista utilizando getItemViewType (int) . A continuación, en onCreateViewHolder (ViewGroup, int) puede comprobar qué tipo debe inflar / crear.

Ejemplo:

@Override public int getItemViewType(int position) { // you should return the view type, based on your own dynamic logic } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { // handle each view type accordingly } } 

Puede utilizar el concepto de varios tipos de vista en su RecyclerView , simplemente utilizando getItemViewType() y controlar el parámetro onCreateViewHolder() en onCreateViewHolder() .

Por ejemplo, puede utilizar el siguiente modelo:

  public class Data{ int field1; float filed2; int rowType // 1,2,2,...N this will fill by you whenever you will //creating arraylist for your recyclerview } public class Custome Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { ArrayList<Data> mItems; class ViewHolderRowType1 extends RecyclerView.ViewHolder { ... } class ViewHolderRowType2 extends RecyclerView.ViewHolder { ... } .... class ViewHolderRowTypeN extends RecyclerView.ViewHolder { ... } @Override public int getItemViewType(int position) { return mItems.get(position).rowType; //or //return positon%2; // This will based on your condition } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case 0: return new ViewHolderRowType0(...); case 1: return new ViewHolderRowType1(...); ... case N: return new ViewHolderRowTypeN(...); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder vh, int position) { //Just check which view type is going to bind and then fill the data accordingly in your rows if(vh instanceof ViewHolderRowType1){ // Fill the data for first view type } else if (vh instanceof ViewHolderRowType2) { // Fill the data for second view type } else if (vh instanceof ViewHolderRowTypeN){ // Fill the data for Nth view type } } 

Para su pegajosa "esta vista débil", puede agregarla en la parte superior de su RecyclerView y luego manejarlo por desplazamiento Evento de RecyclerView

Hay dos maneras de implementar tal RecyclerView

  1. Agregue cabecera en cada diseño y ocultar / mostrar basado en su requisito (preferible).
  2. O utilizar dos diseños diferentes para el encabezado y el contenido (no es preferible porque puede causar problemas en la cuenta total de los elementos en el adaptador).

En su clase personalizada POJO / GetterSetter, agregue un campo para headerStatus (ya sea booleano o int), para identificar si mostrar o no el encabezado.

Ahora en adaptador override public int getItemViewType(int position) .

 static final int TYPE_ITEM = 0; static final int TYPE_SEPARATOR = 1; @Override public int getItemViewType(int position) { if (mData.get(position).getHeaderStatus() == 0) return TYPE_ITEM; else return TYPE_SEPARATOR; } 

Si quieres hacerlo de manera "correcta", sin hacks, debes escribir tu propio LayoutManager, y manejar esos casos a mano. No es tan difícil como suena, pero tomará algunos esfuerzos.

  • FindFirstVisibleItemPositions no funciona para recycleview android
  • No hay adaptador conectado; Saltar el diseño
  • Diferenciar entre una acción de Drag y una acción de Fling en recyclerview
  • ¿Recyclerview hace que el último elemento agregado sea el elemento seleccionado?
  • Lista de vídeos de Android ListView
  • Clic en el elemento programáticamente en RecyclerView
  • ScrollView vs RecyclerView para niños diferentes en Android
  • Error: El hijo especificado ya tiene un padre. Debe llamar a removeView () en el padre del niño primero
  • Barra de desplazamiento no mostrada en RecyclerView
  • Cómo ordenar Strings en un Android RecyclerView?
  • Animar RecyclerView al desplazarse
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.