RecyclerView - получить позицию внутри Activity, а не RecyclerViewAdapter
Уже третий день я занимаюсь обработкой кликов по просмотру. Я изначально использовалListView
затем я переключился наRecyclerView
, я добавилandroid:onclick
элементы каждого элемента управления на моемrow_layout
и я обращаюсь с ними в моемMainActivity
как это:
public void MyMethod(View view) {}
В моем старомListView
реализация, я сделалsetTag(position)
чтобы быть в состоянии получить это вMyMethod
делая это внутри:
Integer.parseInt(view.getTag().toString())
Это сработало без проблем. Хотя сейчас я имею дело сRecyclerView
и быть вынужденным использоватьViewHolder
, который не предлагаетsetTag
метод. После поиска в течение 2 часов, я обнаружил, что люди используютsetTag
как это:
holder.itemView.setTag(position)
Это было приемлемо. Хотя, когда я пытаюсь получить значение отMyMethod
функция с использованием строки:
Integer.parseInt(view.getTag().toString())
Приложение вылетает. Я прочитал несколько реализаций обработки onclick внутри адаптера, который работает, но я должен использоватьMainActivity
потому что я использую что-то уникальное для этой деятельности.
TL; DR Я хочу отправить позицию кликаемой строки в мойMainActivity
в простой манере.
Изменить: я прошу прощения за путаницу, так как моя тема не была очень тщательной. у меня естьRecyclerView
и адаптер. Адаптер связан с моимrow_layout
, этоrow_layout
XML имеет один кореньLinearLayout
, Внутри него есть одинTextView
, другойLinearLayout
(который имеет дваTextViews
) и одинButton
(для простоты). Я не хочу страдать из-за борьбы с кликами наRecylerView
как я сделал сListView
, Итак, я решил добавитьandroid:onclick
для каждого элемента управления, затем ссылкуTextView
а такжеLinearLayout
к одному методу и связатьButton
(и будущееButton
s) их уникальным методам. Чего мне не хватает, так это того, что я хочу рассказать о позиции каждого из методов получения на моемMainActivity
, Если я должен связать все, что исходит от адаптера и идет вMainActivity
к одному обработчику onclick, пусть будет так. Хотя, как бы я сказал, какой элемент управления нажал кнопку?
Изменить 2: запрошенный макет
<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>