使用onClick打开详细信息,具体取决于Recycler视图的位置

时间:2018-05-31 12:25:18

标签: android arraylist android-recyclerview kotlin adapter

当我使用该位置点击该项目并在活动中设置datils时,我想打开更多详细信息。

enter image description here

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

首先使用recyclerView OnClick方法获取Click项的位置 喜欢这种方法

int position=getAdapterPosition();

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

比向下一个活动发送ID和ID来获取数据库中的数据并在下一个活动中设置所有详细信息

最终代码

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