Android Recycler View Horizontal Desplácese hasta el último elemento y muestre el primer elemento

Actualmente estoy trabajando en una vista de reciclador que tiene un desplazamiento horizontal.

Tengo una list que contiene estos valores:

{"2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", …}

y así sucesivamente, hasta 2017

Mi objective aquí es seleccionar el año en el centro

Todo funciona bien pero tengo 2 problemas aquí:

  1. No puedo desplazarme hacia el borde derecho, es como si la vista de reciclador tuviera su límite para desplazarse. Digamos que los 4 últimos artículos son "2014", "2015", "2016", "2017" . Solo puedo desplazarme hasta "2003". Por ahora, soluciono este problema añadiendo un maniquí años antes y después de la list. (muy hackish, pero no tan sólido)

  2. Quiero mostrar el primer hijo cuando el desplazamiento llega al final. Por ejemplo, cuando pueda desplazarme hasta finales de 2017 , quiero mostrar el primer elemento de la list justo al lado de 2017 y en este caso es "2001" . Por ejemplo: 2013 | 2014 | 2015 | 2016 | 2017 | 2001 | …

Según la respuesta anterior, no puede hacer que recyclerview se desplace como un círculo, desde el último elemento hasta el primer elemento. Por lo tanto, debe calcular exactamente el número de elementos y anular la interceptación ontouch para que la vista del reciclador logre el efecto que desea.

lo que deberías usar aquí es loop your recyclerview

en su adaptador anula getItemCount () para devolver algo grande como Integer.MAX_VALUE:

 @Override public int getItemCount() { return Integer.MAX_VALUE; } 

en onBindViewHolder () position divisor de module (%) por número de artículo real:

  @Override public void onBindViewHolder(MyViewHolder holder, int position) { int positionInList = position % dataList.size(); Item item = dataList.get(positionInList); //... } 

al final, coloca el elemento actual en algo en el medio (o de lo contrario, sería infinito solo en dirección descendente).

 // scroll to middle item recyclerView.getLayoutManager().scrollToPosition(Integer.MAX_VALUE / 2); 

Prueba esto,

 recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); recyclerView.getLayoutManager().scrollToPosition(5); 

puede poner su número de artículo aquí en lugar de 5, puede hacer (list.size () – 3) para un año específico.