Cómo seleccionar el primer elemento automáticamente después de vincular el adaptador de RecyclerView en Android

Después de 2 días obtuve la solución final de la siguiente manera:

// Haz tu adaptador …
mLeftAdapter = new LeftMenuAdapter (mContext, mFilterValuesArray);

// Vinculalo a RecyclerView
mFilterBinding.filterLeftRecyclerView.setAdapter (mLeftAdapter);

// Llame a este método que realizará un clic para la 0ª posición después de calcular (enlazar) todos los datos …
postAndNotifyAdapter (nuevo controlador (), mFilterBinding.filterLeftRecyclerView);

El método postAndnotifyAdapter será como:

postAndNotifyAdapter vacío protegido (controlador de controlador final, RecyclerView final recyclerView) {
handler.post (new Runnable () {
@Anular
public void run () {
if (! recyclerView.isComputingLayout ()) {
// Esto llamará al primer elemento llamando a “performClick ()” de la vista.
((LeftMenuAdapter.ViewHolder) recyclerView.findViewHolderForLayoutPosition (0)). MView.performClick ();
} más {
postAndNotifyAdapter (manejador, recyclerView, adaptador);
}
}
});
}

Que esto te ayude. 🙂

Te estoy proporcionando el código, ya que será terriblemente largo si empiezo a explicar el código, así que supongo que puedes entenderlo por tu cuenta.

LinearLayoutManager linearLayoutManager
= nuevo LinearLayoutManager (MainScreen.this, LinearLayoutManager.HORIZONTAL, false);
RecyclerView recyclerView = (RecyclerView) findViewById (R.id.recyclerView);
Adaptador ContentAdapter = nuevo ContentAdapter (recyclerView.getContext ());
recyclerView.setAdapter (adaptador);
recyclerView.setHasFixedSize (verdadero);
recyclerView.setLayoutManager (linearLayoutManager);
ViewHolder de clase pública extiende RecyclerView.ViewHolder
{

Imagen de ImageView;

ViewHolder público (inflador LayoutInflater, padre ViewGroup) {
super (inflater.inflate (R.layout.card_layout_1, parent, false));
picture = (ImageView) itemView.findViewById (R.id.image);
}
}

ContentAdapter de clase pública extiende RecyclerView.Adapter
{
privado estático final int LONGITUD = 5;
privado final Drawable [] mPlacePictures;
ContentAdapter público (contexto de contexto) {
Recursos resources = context.getResources ();
TypedArray a = resources.obtainTypedArray (R.array.card_picture_1);
mPlacePictures = new Drawable [a.length ()];
for (int i = 0; i mPlacePictures [i] = a.getDrawable (i);
}
a.recycle ();
}
@Override public ViewHolder onCreateViewHolder (ViewGroup parent, int viewType) {
Log.e (“MainScreenAdapter”, “ingresando onCreateViewHolder ()”);
return new ViewHolder (LayoutInflater.from (parent.getContext ()), parent);
}
@Override public void onBindViewHolder (titular de ViewHolder, posición int) {
Log.e (“ContentAdapter”, “onBindViewHolder () llamado”);
holder.picture.setImageDrawable (mPlacePictures [posición% mPlacePictures.length]);
}
@Override public int getItemCount () {
Log.e (“ContentAdapter”, “getItemCount () llamado”);
LONGITUD de retorno;
}
}

donde el diseño de la tarjeta tiene una imagen y el diseño de la tarjeta usa la vista de reciclaje para duplicarse y luego usa las imágenes del array.xml

Espero que te ayude. La mejor de las suertes….!

Puede solicitar el foco para una vista secundaria utilizando requestChildFocus (). Puede encontrar más información aquí.

RecyclerView | Desarrolladores de Android, android.view.View)