Cómo agregar Horizontal Recyclerview como un encabezado para Vertical Recyclerview?

Imagen de salida esperada Necesito una salida como esta. Ése es HorizontalRecyclerView como cabecera para VerticalRecyclerView.

Actualmente estoy usando NestedScrollView para lograr este diseño. Pero sentí que el desplazamiento no es suave.

Por favor sugiera cualquier idea. Gracias por adelantado.

Diseño:

<android.support.v4.widget.NestedScrollView android:id="@+id/nsv_my_list" android:layout_width="match_parent" android:layout_height="match_parent" android:overScrollMode="ifContentScrolls" android:visibility="gone" android:clipChildren="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingTop="15dp"> <LinearLayout android:id="@+id/ll_continue_watching" android:layout_width="match_parent" android:layout_height="132dp" android:visibility="gone" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="29dp" android:gravity="center_vertical" android:paddingLeft="15dp" android:paddingRight="15dp"> <customview.font.TextView android:id="@+id/txt_edit_remove_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="@drawable/btn_profile_edit" android:gravity="center" android:paddingTop="2dp" android:text="EDIT" android:textSize="10sp" /> <customview.font.TextView android:id="@+id/txt_continue_watchng" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:text="Continue watching" android:textSize="12sp" /> </RelativeLayout> <View android:layout_width="match_parent" android:layout_height="0.5dp" android:background="@color/horizontal_view_color" /> <android.support.v7.widget.RecyclerView android:id="@+id/rv_horizontal_view" android:layout_width="match_parent" android:layout_height="102dp" android:paddingBottom="15dp" android:paddingTop="15dp" /> <View android:layout_width="match_parent" android:layout_height="0.5dp" android:background="@color/horizontal_view_color" /> </LinearLayout> <android.support.v7.widget.RecyclerView android:id="@+id/rv_vertical_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> </android.support.v4.widget.NestedScrollView> 

Muy simple, su vista de reciclado "principal" tiene 2 tipos de células, la primera, que es otra vista de reciclador, y el resto son células "normales".

En el adaptador de su "principal" reciclar vista, tiene que reemplazar el método getItemViewType, algo así:

  @Override public int getItemViewType(int position) { if(postition == 0) { return 1; //Let's say that you define that 1 is the view type for the recycler view cell } else { return 2; //And 2 is going to be the "normal" cells } } 

Luego, en su método onCreateViewHolder, dependiendo del tipo de vista, debe generar y devolver el viewHolder correcto, algo así:

  @Override public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if(viewType == 1) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.your_other_recyclerview_layout, parent, false); //build the viewHolder ViewHolder vh = new YourOtherRecyclerViewHolder(v); return vh; } else { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.your_normal_cell_layout, parent, false); //build the normal viewHolder YourNormalViewHolder vh = new YourNormalViewHolder (v); return vh; } } 

Por supuesto, debe implementar 2 clases que amplía la clase ViewHolder, una para YourOtherRecyclerViewHolder y la otra para YourNormalViewHolder.

¡Espero que ayude!

  • ¿Cómo implementar multi-select en RecyclerView?
  • Set drawable para DividerItemDecoration
  • Recyclerview notifyDataSetChanged (); no funciona
  • Anular la animación para notifyItemChanged en RecyclerView.Adapter
  • Cómo redimensionar el visor en un RecyclerView
  • NotifyDataSetChanged no actualiza RecyclerView
  • ¿Cómo hacer que la vista de reciclador comience a agregar elementos desde el centro?
  • Desplácese hacia arriba en RecyclerView con LinearLayoutManager
  • Cómo abrir una actividad diferente en recicladorVer artículo onclick
  • ¿Cómo se relaciona la posición de un adaptador de RecyclerView con el índice de su conjunto de datos?
  • Android TV RecyclerView interacción con el foco
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.