RecyclerView:获取位置,并切换到活动切换到、位置、RecyclerView

2023-09-06 13:40:22 作者:抱我

这怎么可能得到它被点击的回收视图行比作一个意图在onclick方法的活动项目的位置? 这是我的适配器:

How is it possible to get the position of the item which was clicked in the recycler view 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);

        }
    }

在这里,我只是有一个onClick当图像中的一个被点击,但每幅图像具有相同的意向。

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

推荐答案

您可以得到现在的位置是从ViewHolder通过为getPosition()方法。就像下面code:

You can get postion from ViewHolder by getPosition() 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();
            ...

        }
    }
}