使用 onClick 根据 Recycler 视图的位置打开详细信息

using onClick to open details depending on the position of Recycler view

我想在使用位置单击项目并在 activity 中设置数据时打开更多详细信息。

您可以在 Java 或 Kotlin 中写下您的建议 :)

在适配器中创建构造函数 class :

  public DataAdapter(List<Pojo> dataList, OnItemClickListener listener) {
            this.dataList = dataList;
            this.listener = listener;
        }

创建 OnBindViewHolder() 方法并获取位置:

@Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        final Pojo movie = dataList.get(position);

        holder.Showid.setText(movie.getCatagory_id());
        holder.fname.setText(movie.getCatagory_name());
        holder.thumbNail.setImageUrl(movie.getCatagory_thumbnailUrl(), imageLoader);
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override public void onClick(View v) {
                listener.onItemClick(movie.getSubCatagoryArrayList());
            }

        });
    }

MainActivity.class 界面上创建:

public interface OnItemClickListener {
        void onItemClick(ArrayList<Pojo2> item);
    }

首先recyclerView的OnClick方法获取Click item的位置 喜欢这个方法

int position=getAdapterPosition();

比获取项目的位置(如 modelArrayList.get(getAdapterPosition());

然后将 id 发送到下一个 activity 和 id 以获取数据库中的数据并在下一个 activity

中设置所有详细信息

最终代码

  itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position=getAdapterPosition();
               ModelClass model = modelArrayList.get(getAdapterPosition());
              Long id = model.getId();
                Intent i = new Intent(v.getContext(), NextActivity.class);
                i.putExtra("id",id);

                v.getContext().startActivity(i);
            }
        });

和 NextActivity 代码

Long id = getActivity().getIntent().getExtras().getLong("id", 0);