RecyclerView - obtenha posição dentro da atividade em vez de RecyclerViewAdapter
É o meu terceiro dia agora lidando com a manipulação dos meus cliques de exibição. Eu originalmente estava usandoListView
, então mudei paraRecyclerView
. Eu adicioneiandroid:onclick
elementos para todos os controles no meurow_layout
e eu estou lidando com eles na minhaMainActivity
como isso:
public void MyMethod(View view) {}
Na minha idadeListView
implementação, eu fizsetTag(position)
para conseguir entrarMyMethod
fazendo isso dentro dele:
Integer.parseInt(view.getTag().toString())
Isso funcionou bem sem problemas. Embora agora eu esteja lidando comRecyclerView
e sendo forçado a usar oViewHolder
, que não oferece umsetTag
método. Depois de pesquisar por 2 horas, descobri que as pessoas usamsetTag
como isso:
holder.itemView.setTag(position)
Isso foi aceitável. Embora quando eu tento obter o valor doMyMethod
função usando a linha:
Integer.parseInt(view.getTag().toString())
O aplicativo trava. Eu li várias implementações de manipulação onclick dentro do adaptador que funciona, mas tenho que usar oMainActivity
porque estou usando algo que é exclusivo para essa atividade.
TL; DR Quero enviar a posição da linha clicada para o meuMainActivity
de uma maneira simples.
Edit: Peço desculpas pela confusão, pois meu tópico não foi muito completo. eu tenho umRecyclerView
e um adaptador. O adaptador está vinculado ao meurow_layout
. esterow_layout
xml tem uma raizLinearLayout
. Dentro dele há umTextView
, outroLinearLayout
(que tem doisTextViews
) e umButton
(Pela simplicidade). Não quero sofrer por lidar com os cliques emRecylerView
como eu fiz com oListView
. Então, eu decidi adicionar umandroid:onclick
para todo controle, depois vinculeTextView
eLinearLayout
a um único método e vincule oButton
(e futuroButton
s) aos seus métodos únicos. O que sinto falta é que quero poder informar a posição em cada um dos métodos de recebimento em meuMainActivity
. Se devo vincular tudo o que vem do adaptador e entra no diretórioMainActivity
para um único manipulador onclick, que assim seja. Embora, como eu diria qual controle disparou o clique?
Editar 2: o layout 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>