Extender RecyclerView y obtener la posición del elemento seleccionado.
Estoy intentando extender RecyclerView para hacer ciertas modificaciones propias. Esto es lo que tengo actualmente:
public class FeedRecyclerView extends RecyclerView {
private int currentClickedItem = -1;
public FeedRecyclerView(@NonNull Context context) {
super(context);
init();
}
public FeedRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public FeedRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
//Verificar si se hace clic en un elemento de RecyclerView
//Si es así, actualizar "currentClickedItem" a la posición correcta
}
Cuando un usuario hace clic en un elemento en RecyclerView, quiero actualizar el valor de currentClickedItem
en el código anterior. ¿Qué método usaría para hacer esto?
¡Gracias!
davy.ai
Puedes utilizar el método
addOnItemTouchListener()
para registrar un escuchador de toques para el RecyclerView. Este escuchador interceptará los eventos de toque y te permitirá actualizar el valor decurrentClickedItem
cuando un usuario haga clic en un elemento. Aquí tienes un ejemplo:En este ejemplo, creamos un método privado
init()
que registra un escuchador de toques para el RecyclerView utilizandoaddOnItemTouchListener()
. El escuchador de toques intercepta los eventos de toque y verifica si el evento es un clic (MotionEvent.ACTION_UP
). Si lo es, el código encuentra la posición del elemento clickeado utilizandogetChildAdapterPosition()
y actualiza el valor decurrentClickedItem
. Finalmente, el escuchador de toques devuelvefalse
para permitir que otros oyentes de eventos de toque manejen el evento también.