Retrieve id on an onclick Recycler

0

My problem is how to adapt this tutorial link

Since I have a Recycler using a modified adapter (I think it's like that, I'm new) and I want to get an id for example of the title (name) of each item, since they are different, and that I create the activity detail with the right information. As you will see in the row of the Recycler does not appear the txtD but in the activity detail xml, and that in the information that I want to pass in addition to the imageview that is shared.

public class T_Fisica implements Materias {
private final int image_t;
private final String nombre_t, text_t, text_d;


public class T_Fisica implements Materias {

private final int image_t;
private final String nombre_t, text_t, text_d;


public T_Fisica(int image_t, String nombre_t, String text_t, String text_d) {
    this.image_t = image_t;
    this.nombre_t = nombre_t;
    this.text_t = text_t;
    this.text_d= text_d;
}

   public int getimage_t() {return image_t;}

   public String getNombre_t() {return nombre_t;}

   public String getText_t() {return text_t;}

   public String getText_d(){return text_d;}

   public int getId() {
   return nombre_t.hashCode();
   }

@Override
public int getViewType() {
    return 1;
    }
}

Interface Matters

public interface Materias {
int getViewType();
}

Item xml (row)

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_marginTop="1dp"
    android:layout_marginStart="70dp"
    android:elevation="7dp">

    <TextView
        android:id="@+id/textView90"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:gravity="center"
        android:layout_marginBottom="30dp"
        android:shadowColor="#212121"
        android:shadowDx="-8"
        android:shadowDy="1"
        android:shadowRadius="10"
        android:text="TextView2"
        android:textColor="#fafafa"
        android:textSize="48sp"
        android:textStyle="bold" />
</RelativeLayout>

<android.support.v7.widget.CardView
    android:id="@+id/card1"
    android:layout_width="370dp"
    android:layout_height="440dp"
    android:layout_marginStart="2dp"
    android:layout_marginEnd="40dp"
    android:layout_marginTop="50dp"
    android:foreground="?android:attr/selectableItemBackground"
    app:cardBackgroundColor="#455a64"
    app:cardCornerRadius="3dp"
    app:cardElevation="4dp"
    android:layout_centerHorizontal="true">

</android.support.v7.widget.CardView>

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card2"
    android:layout_width="315dp"
    android:layout_height="150dp"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="140dp"
    app:cardBackgroundColor="#c9cd5c"
    app:cardCornerRadius="0dp"
    app:cardElevation="6dp">

    <TextView
        android:id="@+id/textView91"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="40dp"
        android:gravity="center"
        android:text="TextView3"
        android:textColor="#eceff1"
        android:textSize="12.5sp"
        android:textStyle="italic"
        android:transitionGroup="false" />

</android.support.v7.widget.CardView>

<android.support.v7.widget.CardView
    android:id="@+id/card3"
    android:layout_width="300dp"
    android:layout_height="280dp"
    android:layout_marginLeft="50dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="315dp"
    android:layout_marginBottom="10dp"
    app:cardCornerRadius="0dp"
    app:cardElevation="6dp">

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:transitionName="@string/image_transition" />

</android.support.v7.widget.CardView>


<ImageView
    android:id="@+id/Image1"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:elevation="7dp"
    android:scaleType="centerCrop"
    app:srcCompat="@mipmap/comillas"
    android:layout_marginTop="100dp"
    android:layout_marginLeft="2dp"/>

activity detail xml

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card19"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_marginTop="20dp"
    app:cardElevation="8dp">


    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:scaleType="centerCrop"
        android:transitionName="@string/image_transition" />
</android.support.v7.widget.CardView>

<include
    android:id="@+id/toolbar"
    layout="@layout/toolbar"
    tools:layout_conversion_absoluteWidth="384dp"
    tools:layout_conversion_absoluteHeight="72dp"
    android:layout_width="match_parent"
    android:layout_height="300dp">

</include>

<android.support.v7.widget.CardView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:id="@+id/card20"
    android:layout_marginTop="20dp"
    android:layout_marginRight="12dp"
    android:layout_marginLeft="12dp"
    xmlns:android="http://schemas.android.com/apk/res/android"
    app:cardElevation="4dp"
    app:cardCornerRadius="0dp"
    android:layout_height="match_parent">
    <ScrollView
        android:layout_width="match_parent"
        android:fillViewport="true"
        android:scrollbars="none"
        android:layout_height="wrap_content">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/txtD"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:textStyle="bold"
                android:layout_alignParentStart="true"
                android:layout_marginTop="160dp"/>
        </RelativeLayout>
    </ScrollView>
</android.support.v7.widget.CardView>

activity detail

public class Activity_Detalle extends AppCompatActivity {
    public final static String ID = "ID";
    //public items
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity__detalle);
    Toolbar toolbar= (Toolbar)findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle("");
    //nombres=T_Fisica.getItem(getIntent().getIntExtra(ID,0));
    getWindow().setEnterTransition(TransitionInflater.from(this).inflateTransition(R.transition.shared_element));

    String det="";
    Bundle extra = getIntent().getExtras();
    if (extra!=null){
        det=extra.getString("DETALLE");
    }
    TextView txtD = (TextView)findViewById(R.id.txtD);
    txtD.setText(det);
    }

}

Recycler

public  class T_FAdaptador extends 
RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final int ITEM1 = 1;
private final int ITEM2 = 2;

private List<Materias> items = new ArrayList<>();

private static Context context;

static class Item1Holder extends RecyclerView.ViewHolder{
    public final TextView nombre, text;
    public final ImageView imagen;
    public Item1Holder(View itemView) {
        super(itemView);
        nombre= (TextView)itemView.findViewById(R.id.textView90);
        imagen=(ImageView)itemView.findViewById(imageView2);
        text=(TextView)itemView.findViewById(R.id.textView91);
       // det=(TextView)itemView.findViewById(R.id.txtD);

        itemView.setOnClickListener (new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               Intent intent = new Intent(context,Activity_Detalle.class);
                intent.putExtra("DETALLE", det.getText());
                ActivityOptionsCompat option = ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) context, imagen, context.getString(R.string.image_transition));
                context.startActivity(intent, option.toBundle());
                ((Activity) context).getWindow().setExitTransition(TransitionInflater.from(context).inflateTransition(R.transition.shared_element_exit));
                }

        });
    }

    static class Item2Holder extends RecyclerView.ViewHolder{
        public final TextView nombre, text;
        public final ImageView imagen;
        public Item2Holder(View itemView) {
            super(itemView);
            nombre= (TextView)itemView.findViewById(R.id.textView90);
            imagen=(ImageView)itemView.findViewById(imageView2);
            text=(TextView)itemView.findViewById(R.id.textView91);
        }
    }}

public T_FAdaptador(Context context, List<Materias> items) {
    this.context=context;
    this.items = items;

}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    RecyclerView.ViewHolder viewHolder;
    switch (viewType){
        case ITEM1: viewHolder = new Item1Holder(inflater.inflate(R.layout.row_fisica,parent,false));
            break;
        case ITEM2: viewHolder = new Item1Holder.Item2Holder(inflater.inflate(R.layout.row_prueba,parent,false));
            break;
        default: viewHolder = new Item1Holder(inflater.inflate(R.layout.row_fisica,parent));
    }
    return viewHolder;
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    switch (getItemViewType(position)){
        case ITEM1:
            T_Fisica item1 = (T_Fisica) items.get(position);
            Item1Holder item1Holder = (Item1Holder)holder;
            item1Holder.nombre.setText(item1.getNombre_t());
            item1Holder.text.setText(item1.getText_t());
            item1Holder.imagen.setImageResource(item1.getimage_t());
            //item1Holder.det.setText(item1.getText_d());
            break;
        case ITEM2:
            T_Algebra item2 = (T_Algebra) items.get(position);
            Item1Holder.Item2Holder item2Holder = 
(Item1Holder.Item2Holder)holder;
            item2Holder.nombre.setText(item2.getNombre_t());
            item2Holder.text.setText(item2.getText_t());
            item2Holder.imagen.setImageResource(item2.getimage_t());
            break;
    }
}

@Override
public int getItemViewType(int position) {
    return items.get(position).getViewType();
}

@Override
public int getItemCount() {
    return items.size();
}
}

and finally the activity where the Recycler is lodged

public class Fisica extends AppCompatActivity {

private RecyclerView reciclador;
private RecyclerView.LayoutManager lmanager;
private RecyclerView.Adapter adaptador;
private List<Materias> items = new ArrayList<>();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fisica);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle("Movimientos");
    getWindow().setEnterTransition(TransitionInflater.from(this).inflateTransition(R.transition.enter_activity));
    //getWindow().setExitTransition(TransitionInflater.from(this).inflateTransition(R.transition.shared_element_exit));


    items.add(new T_Fisica(R.drawable.mruymruvmenor, "MRU y MRUV", "El movimiento rectilíneo uniforme (m.r.u.) es aquel en el que la trayectoria es una línea recta y la velocidad es constante.El MRUV es aquel movimiento en que la velocidad varía uniformemente con el tiempo y, por lo tanto, la aceleración permanece constante.",getString(R.string.MruyMruv)));
    items.add(new T_Fisica(R.drawable.clibreytverticalmenor, "Caida Libre y Tiro Vertical", "Se trata de un movimiento rectilíneo uniforme variado, también conocido como MRUV. En un tiro vertical, la velocidad cambia y existe una aceleración que está dada por la acción de la gravedad. El tiro vertical, cuya dirección puede ser descendente o ascendente, tiene una velocidad inicial que resulta diferente a cero.",getString(R.string.TVerticalyCLibre)));
    items.add(new T_Fisica(R.drawable.tirooblicuomenor, "Tiro Oblicuo", "Resultado de imagen para definicion tiro oblicuo\n" +
            "Tiro oblicuo. Se trata de una particularidad del \"Tiro parabólico\", por lo tanto es un “movimiento rectilíneo uniforme” en su desarrollo horizontal y un “movimiento uniformemente variado” en su desarrollo vertical. Pero, en el eje vertical se comporta como el movimiento de “Caída Libre”.",getString(R.string.TOblicuo)));
    items.add(new T_Fisica(R.drawable.mcuymcuamenor, "MCU y MCUA", "MCU y MCUA son movimiento de un cuerpo por una trayectoria circular, tanto si te trata de un movimiento uniforme o uniformemente acelerado. Lo único que cambian son las formas de expresar el espacio, la velocidad y la aceleración.",getString(R.string.McuyMcuv)));
    items.add(new T_Fisica(R.drawable.dinamicamenor, "Dinamica y Dinamica Del Circular", "La dinámica es la parte de la física que estudia la relación existente entre las fuerzas que actúan sobre un cuerpo y los efectos que se producirán sobre el movimiento de ese cuerpo.",getString(R.string.Dinamica)));
    items.add(new T_Fisica(R.drawable.mgravitatoriomenor, "Movimiento Gravitatorio", "Estudia las fuerzas que infuyen en el movimientos de los planetas.",getString(R.string.MGravitatorio)));
    items.add(new T_Fisica(R.drawable.fuerzaelasticamenor, "Fuerza Elastica", "La fuerza elástica es la ejercida por objetos tales como resortes, que tienen una posición normal, fuera de la cual almacenan energía potencial y ejercen fuerzas.",getString(R.string.FElastica)));
    items.add(new T_Fisica(R.drawable.moamenor, "Movimiento Oscilatorio Armonico", "Se trata de un movimiento armónico simple. El movimiento oscilatorio es un movimiento en torno a un punto de equilibrio estable. Este puede ser simple o completo. Los puntos de equilibrio mecánico son, en general, aquellos en los cuales la fuerza neta que actúa sobre la partícula es cero.",getString(R.string.Mos)));
    items.add(new T_Fisica(R.drawable.estaticamenor, "Estatica", "La estática es la rama de la mecánica clásica que analiza las cargas (fuerza, par / momento) y estudia el equilibrio de fuerzas en los sistemas físicos en equilibrio estático, es decir, en un estado en el que las posiciones relativas de los subsistemas no varían con el tiempo.",getString(R.string.Estatica)));
    items.add(new T_Fisica(R.drawable.pendulosimplemenor, "Pendulo Simple", "Un péndulo simple se define como una partícula de masa m suspendida del punto O por un hilo inextensible de longitud l y de masa despreciable. Si la partícula se desplaza a una posición q0 (ángulo que hace el hilo con la vertical) y luego se suelta, el péndulo comienza a oscilar.",getString(R.string.PenduloSimple)));
    items.add(new T_Fisica(R.drawable.hidrostaticamenor, "Hidrostatica", "Se describe como presión al acto y resultado de comprimir, estrujar o apretar; a la coacción que se puede ejercer sobre un sujeto o conjunto; o la magnitud física que permite expresar el poder o fuerza que se ejerce sobre un elemento o cuerpo en una cierta unidad de superficie.",getString(R.string.Hidrostatica)));


    reciclador = (RecyclerView) findViewById(R.id.reciclador);
    reciclador.setHasFixedSize(true);
    lmanager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
    reciclador.setLayoutManager(lmanager);
    adaptador = new T_FAdaptador(this, items);
    reciclador.setAdapter(adaptador);
}

}

Excuse me for being untidy if there is a lack of information, tell me that I edit the question, I would be very grateful if you help me achieve it.

    
asked by Carlos 25.05.2017 в 17:26
source

1 answer

0

If what you want is to obtain the index of the element that the user has touched, you can use the listener in the adapter:

itemView.setOnClickListener (new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int position = getAdapterPosition();
            T_Fisica item = (T_Fisica) items.get(getAdapterPosition());
            String nombre = item.getNombre_t();

            Intent intent = new Intent(context,Activity_Detalle.class);
            intent.putExtra("nombre", nombre);

            // Resto del código...
        }

    });

And you recover the extra from Activity_Detalle

Bundle extra = getIntent().getExtras();
String nombre = extra.getString("nombre");
    
answered by 25.05.2017 / 19:54
source