【问题标题】:using onClick to open details depending on the position of Recycler view使用 onClick 根据 Recycler 视图的位置打开详细信息
【发布时间】:2018-11-10 11:10:36
【问题描述】:

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

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

【问题讨论】:

  • 您可以从视图持有者 click 获取位置,并使用该 id 加载下一页
  • 所有那些无法访问 Google 搜索的开发者,真可惜...
  • 我没有找到任何符合我的情况的答案:(
  • 你的情况不是唯一的,顺便试一下第一位评论者的解决方案

标签: android arraylist android-recyclerview kotlin adapter


【解决方案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);
    }

【讨论】:

    【解决方案2】:

    首先 recyclerView 的 OnClick 方法获取点击项的位置 喜欢这种方法

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      相关资源
      最近更新 更多