これは私の item_simple_itemview.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp">
<TextView
android:id="@+id/simple_text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
tools:text="Test"
android:text="This is some temp text" />
<Button
android:id="@+id/btn"
android:layout_width="208dp"
android:layout_height="50dp"
android:layout_marginTop="16dp"
android:minWidth="10dip"
android:minHeight="10dip"
android:onClick="onChangeClick" />
</LinearLayout>
私が作成したRecyclerView
彼らは、リスト内の「アイテム」はあるとして、このxmlファイルの複数のインスタンスで。
私は、onChangeClick
次のとおりです。
public void onChangeClick(View view) {
View inflatedView = getLayoutInflater().inflate(R.layout.item_simple_itemview, null);
TextView textView = inflatedView.findViewById(R.id.simple_text);
Toast.makeText(getApplicationContext(), (CharSequence) ("Text: " + textView.getText()),
Toast.LENGTH_SHORT);
}
私はプログラム的にインスタンスを追加item_simple_itemview
するのをRecyclerView
、とのテキストを変更simple_text
してbtn
。私は、個々の項目のボタン上のボタンをクリックすると、しかし、私はトースト通知を取得しますText: this is some temp text
。
どのように私は、テキストはアイテムではなく、ベースxmlファイル自体の特定のインスタンスを参照するのですか?
android:onClick
あなたがそれを使用しているように、ある古代。あなたは、私はそれが年間で使用さ見ていないした後、今日それを見ていることが二度目です。具体的には、android:onClick
あなたがあなたの上に実装することをメソッドへのルートのクリックイベントをActivity
。それは、特に柔軟ではありません。
そして、あなたのケースでは、あなたはN個のボタンを持っている場合は、それらのNボタンのそれぞれは、同じメソッドを呼び出します。あなたが得る一方でView
、パラメータとして自分のメソッドに渡され、それはあなたにどの行を識別するために役立つが、すべてのことに限らないRecyclerView
クリックされたものです。
私は削除をお勧めしますandroid:onClick
。その代わり、でonBindViewHolder()
、あなたの仕事の一部として、呼び出しsetOnItemClickListener()
にButton
。OnClickListener
あなたがそこに参照することができます使用していること(またはラムダ式)position
に渡されるパラメータonBindViewHolder()
あなたが作る場合、position
可能final
。そうすれば、あなたのクリックハンドラはへの直接アクセスを持ちposition
、そこから、あなたはそのリストに何特定の項目を見つけることができますposition
が対応します。