RecyclerView: obtenga la posición dentro de la actividad en lugar de RecyclerViewAdapter
Es mi tercer día ahora tratando con el manejo de mis clics de vista. Originalmente estaba usandoListView
, luego cambié aRecyclerView
. Yo he añadidoandroid:onclick
elementos para cada control en mirow_layout
y los estoy manejando en miMainActivity
Me gusta esto:
public void MyMethod(View view) {}
En mi viejoListView
implementación, he hechosetTag(position)
para poder entrarMyMethod
haciendo esto dentro de él:
Integer.parseInt(view.getTag().toString())
Esto funcionó muy bien sin problemas. Aunque ahora estoy lidiando conRecyclerView
y ser forzado a usar elViewHolder
, que no ofrece unsetTag
método. Después de buscar durante 2 horas, descubrí que la gente usasetTag
Me gusta esto:
holder.itemView.setTag(position)
Esto fue aceptable. Aunque cuando trato de obtener el valor delMyMethod
función usando la línea:
Integer.parseInt(view.getTag().toString())
La aplicación se bloquea. He leído varias implementaciones de manejo de clics dentro del adaptador que funciona pero tengo que usar elMainActivity
porque estoy usando algo que es exclusivo de esa actividad.
TL; DR Quiero enviar la posición de la fila cliqueada a miMainActivity
De una manera simple.
Editar: Pido disculpas por la confusión ya que mi tema no fue muy completo. tengo unRecyclerView
y un adaptador El adaptador está vinculado a mirow_layout
. Estarow_layout
xml tiene una raízLinearLayout
. En su interior hay unoTextView
otroLinearLayout
(que tiene dosTextViews
) y unoButton
(por simplicidad). No quiero sufrir por lidiar con los clics enRecylerView
como hice con elListView
. Entonces, he decidido agregar unandroid:onclick
para cada control, luego enlaceTextView
yLinearLayout
a un solo método y vincular elButton
(y futuroButton
s) a sus métodos únicos. Lo que me falta es que quiero poder decir la posición en cada uno de los métodos de recepción en miMainActivity
. Si debo vincular todo lo que viene del adaptador y entra en elMainActivity
a un solo controlador onclick, que así sea. Aunque, ¿cómo podría saber qué control disparó el clic?
Edición 2: el diseño solicitado
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:onClick="MyMethod"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:id="@+id/letter"
android:onClick="MyMethod"
android:layout_width="60dp"
android:layout_height="fill_parent"
/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:onClick="MyMethod"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/firstname"
android:onClick="MyMethod"
android:layout_width="fill_parent"
android:layout_height="17dp" />
<TextView
android:id="@+id/longname"
android:onClick="MyMethod"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<Button
android:text="Test"
android:onClick="OtherMethod"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:id="@+id/process"/>
</LinearLayout>