RecyclerView获取点击的项目详细信息 - Android

时间:2016-03-06 05:29:58

标签: android android-recyclerview recycler-adapter

我是android新手。我正在尝试使用this教程创建RecyclerViewRecyclerView工作正常。我的问题是,我想获得RecyclerView

所点击项目的标题和说明

有人能帮助我吗? Here是我的完整代码。

更新

    public class View_Holder extends RecyclerView.ViewHolder implements View.OnClickListener{

        CardView cv;
        TextView title;
        TextView description;
        ImageView imageView;


        View_Holder(View itemView) {
            super(itemView);
            cv = (CardView) itemView.findViewById(R.id.cardView);
            title = (TextView) itemView.findViewById(R.id.title);
            description = (TextView) itemView.findViewById(R.id.description);
            imageView = (ImageView) itemView.findViewById(R.id.imageView);

            //added by me
            title.setOnClickListener(this);
            description.setOnClickListener(this);
            imageView.setOnClickListener(this);
        }

        //added by me

        public ImageView getImageView() {
            return imageView;
        }
        public TextView getTitle() {
            return title;
        }
        public TextView getDescription() {
            return description;
        }

        @Override
        public void onClick(View v) {
           // Toast.makeText(get, "CLICK", Toast.LENGTH_SHORT).show();
            Log.i("positon-of-clicked-item", String.valueOf(getAdapterPosition()));
            Log.i("positon-of-clicked-item", String.valueOf(getLayoutPosition()));
            Log.i("positon-of-clicked-item", String.valueOf(this.getTitle()));
            Log.i("positon-of-clicked-item", String.valueOf(this.getDescription()));
           // getLayoutPosition(); //no method like that
        }

3 个答案:

答案 0 :(得分:3)

只需使用ViewHolder视图对象即可获得如下所示的详细信息。

@Override
public void onClick(View v) {
   // Toast.makeText(get, "CLICK", Toast.LENGTH_SHORT).show();
    Log.i("positon-of-clicked-item", String.valueOf(getAdapterPosition()));
    Log.i("positon-of-clicked-item", String.valueOf(getLayoutPosition()));
    Log.i("positon-of-clicked-item", String.valueOf(title.getText());
    Log.i("positon-of-clicked-item", String.valueOf(sescription.getText()));
   // getLayoutPosition(); //no method like that
}

答案 1 :(得分:1)

getAdapterPosition()内拨打onClick(),然后使用您正在填充的列表中的位置获取项目。

更新:

最简单的方法是将ViewHolder放在适配器类中。然后,您可以访问适配器的List<Data>

答案 2 :(得分:1)

在以下链接中有一些很好的相关帖子/文章:

该解决方案易于编码,但如果您不熟悉使用RecyclerView,则不会立即显现。

在View_Holder类中,您需要做两件事:

  1. 在视图持有者的构造函数中,传递对适配器的引用(或者您想要响应的任何内容)并存储它。在上面的链接中有这样的例子。
  2. 覆盖 onClick 方法以响应所选项目的点击事件。然后在 onClick 方法中,调用 getAdapterPosition()方法以检索用于为适配器供电的游标中当前项的位置。然后调用您在步骤1中传递引用的适配器类中定义的方法,并将光标所需的位置作为参数传递给该方法。
  3. 在从onClick事件调用的方法中,您需要从光标中查找所需的信息。