sergejdeveloper sergejdeveloper - 2 months ago 33
Android Question

RecyclerView : get position and switch to activity

How is it possible to get the position of the item which was clicked in the

RecyclerView
row and than make a intent to an activity in the
onClick
method ?
Here is my adapter:

public class SergejAdapter extends RecyclerView.Adapter<SergejAdapter.MyViewHolder>{

private LayoutInflater inflater;
List<Information> data= Collections.emptyList();

public SergejAdapter(Context context, List<Information> data){
inflater = LayoutInflater.from(context);
this.data=data;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.navigation_drawer_custom_row,parent,false);
MyViewHolder holder= new MyViewHolder(view);
return holder;
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Information current=data.get(position);
holder.title.setText(current.title);
}

@Override
public int getItemCount() {
return data.size();
}
class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
TextView title;
ImageView icon;

public MyViewHolder(View itemView){
super(itemView);
title= (TextView) itemView.findViewById(R.id.listText);
icon = (ImageView) itemView.findViewById(R.id.listIcon);
icon.setOnClickListener(this);
}

@Override
public void onClick(View v) {
Context context = itemView.getContext();
Intent intent = new Intent(context, Ernaehrung.class);
context.startActivity(intent);

}
}


Here I just have an
onClick
when one of the images was clicked, but every image has the same intent.

Answer

You can get postion from ViewHolder by using getAdapterPosition() method. Like in code below:

public class SergejAdapter extends RecyclerView.Adapter<SergejAdapter.MyViewHolder>{

    ...

    class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{


        @Override
        public void onClick(View v) {
            // here you use position
            int position = getAdapterPosition();
            ...

        }
    }
}