Obtener específico InflatedView Android Studio

Ben Gardner:

Este es mi 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>

He creado una RecyclerViewcon varias instancias de este archivo XML, ya que son "elementos" en la lista.

Mi onChangeClickes el siguiente:

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);
}

Me programáticamente añadir instancias de item_simple_itemviews con el RecyclerView, y cambiar el texto en simple_texty btn. Cuando hago clic en el botón en el botón de un elemento individual, sin embargo, tengo la notificación de pan tostado Text: this is some temp text.

¿Cómo hago para que el texto se refieren a esa instancia específica del artículo y no el archivo XML propia base?

CommonsWare:

android:onClick, Como lo está utilizando, es antigua . La tuya es la segunda vez que he visto hoy, después de no haber visto que se usa en muchos años. En particular, android:onClicklas rutas evento Haga clic para un método que implemente en su Activity. Eso no es especialmente flexible.

Y, en su caso, si tiene N botones, cada uno de los N botones llamar al mismo método. Mientras se obtiene la Viewtraspasó a su método como un parámetro, que no es necesariamente tan útil para identificar qué fila en su RecyclerViewes la que se ha hecho clic.

Recomiendo retirar android:onClick. En cambio, en onBindViewHolder(), como parte de su trabajo, llamada setOnItemClickListener()en el Button. El OnClickListener(o la expresión lambda) que se utiliza no puede referirse al positionparámetro pasado a onBindViewHolder(), si haces positionsea final. De esta manera, el controlador de clic tiene acceso directo position, y desde allí se puede averiguar qué artículo particular en la lista que positioncorresponde a.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=371051&siteId=1
Recomendado
Clasificación