El mejor lugar para adjuntar onClickListener en recyclerview
Mientras que miraba algunos tutoriales sobre la visión del reciclador. Algunos de ellos utilizaron el constructor del viewHolder para atar el oyente del onClick mientras que algunos de ellos utilizaron el método de onBindViewHolder. que método es el mejor lugar para adjuntar el onclicklistener. Estoy realmente confundido
- No puedo compilar mi proyecto android
- RecyclerView con GridLayoutManager y Picasso mostrando imagen incorrecta
- Combinar múltiples RecyclerView.Adapter para usar con RecyclerView único (Android)
- ¿Hay una manera de compartir un mismo LayoutManager entre múltiples RecyclerViews anidados
- Evento de toque de la manija para los artículos dentro de Recyclerview - android
- Cómo hacer la vista de mensaje roscado con enviar y recibir mensajes en dos lados con la vista de reciclador
- Datos de SQLite a un RecyclerView
- StaggeredGridLayout desordena al desplazarse hacia arriba
- Adición de elementos al reciclado sin fin con RecyclerView con un reciclado ReverseLayout
- Alternativa a registerDataSetObserver () en RecyclerView
- Métodos del adaptador RecyclerView no llamados
- Margen entre elementos en reciclado ver Android
- Google Maps Lite Mode causa jank en RecyclerView
El método onBindViewHolder
se llama cada vez que enlaza su vista con datos. Así que no hay el mejor lugar para establecer el oyente de clics. No es necesario que establezca OnClickListener
muchas veces para una View
. Así que la mejor solución es establecer el oyente de onCreateViewHolder
en el método onCreateViewHolder
. Pero lo importante es una forma de implementar en el oyente de clics. Si por ejemplo desea obtener algún modelo de la lista puede utilizar el método getPosition()
desde ViewHolder
.
Mira el ejemplo
@Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { final View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.view_magazine_list_item, null); final ViewHolder result = new ViewHolder(view); view.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ YourObject yourobject = yourObjectsList.get(result.getAdapterPosition())); } }); return result; }
En ViewHolder
es el mejor lugar:
public static class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ //views declare here public ItemViewHolder(View convertView) { super(convertView); ... ... convertView.setOnClickListener(this); } @Override public void onClick(View v) { //do something to view here //also you can get view position by 'getPosition()' here } }
- Obtener una IllegalArgumentException al agregar datos de línea
- ¿Es una buena práctica usar un TextView oculto como identificador?