繁体   English   中英

CardView 的 OnClickListener?

[英]OnClickListener for CardView?

如何将OnClickListener附加到CardView 我希望每张卡片在点击时都有不同的动作。

我有一个RecyclerView ,它有一个用于显示卡片的自定义适配器。 这就是它的实现方式

您应该在ViewHolder类中实现OnItemClickListener ,并将当前项目传递给每个onBindViewHolder()上的ViewHolder实例。

这篇文章

public static class ViewHolder extends RecyclerView.ViewHolder {
    public View view;
    public Item currentItem;

    public ViewHolder(View v) {
        super(v);
        view = v;
        view.setOnClickListener(new View.OnClickListener() {
            @Override public void onClick(View v) {
                // item clicked
            }
        });
    }
}

@Override public void onBindViewHolder(ViewHolder viewHolder, int i) {
    viewHolder.currentItem = items.get(i);
}

这是我对这个问题的解决方案:

  1. 首先在 ViewHolder 类中添加对 View 视图对象的引用

    public static class TouristViewHolder extends RecyclerView.ViewHolder{ public ImageView img; public TextView name; public TextView description; public RatingBar rating; public View view; // <----- here public TouristViewHolder(final View view) { super(view); this.view = view; // <----- here // ... rest of code } }
  2. 接下来,在方法onBindViewHolder(final MyViewHolder holder, final int position) ,我添加了一个监听器并设置了新的Intent

     @Override public void onBindViewHolder(TouristViewHolder touristViewHolder, final int position) { touristViewHolder.view.setOnClickListener(new View.OnClickListener() { // <--- here @Override public void onClick(View v) { Log.i("W4K","Click-"+position); context.startActivity(new Intent(context,MainActivity.class)); // <--- here } });

它对我有用,希望它能帮助别人。

  1. 您只需在 onBindViewHolder 中添加您想要的 onClick 侦听器。 在哪里可以轻松访问该职位的价值。 请检查以下代码。

     @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { holder.title.setText(Html.fromHtml(html2text(results.get(position).getTitle().toString()))); holder.description.setText(Html.fromHtml(html2text(results.get(position).getSummary().toString()))); holder.url.setText(Html.fromHtml(html2text(results.get(position).getUrl().toString()))); holder.url.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(mContext, DetailsActivity.class); intent.putExtra("url",results.get(position).getUrl().toString()); mContext. startActivity(intent); } });

大家好,这有效:

   cardView=findViewById(R.id.cardView);
    cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(getApplicationContext(),"clicked",Toast.LENGTH_SHORT).show();
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM