Android OnClick Listener应用于整个卡片视图,而不仅仅是文本视图

Android OnClick Listener应用于整个卡片视图,而不仅仅是文本视图,android,view,android-recyclerview,Android,View,Android Recyclerview,我试图在回收器视图中实现cardview上的onclick。目前,我只能将cardview中的textview设置为可单击,如我的代码所示: @Override public void onBindViewHolder(final ShopViewHolder shopViewHolder, final int i) { shopViewHolder.shopNameTV.setText(shops.get(i).name); shopViewHolder.categoryTV.

我试图在回收器视图中实现cardview上的onclick。目前,我只能将cardview中的textview设置为可单击,如我的代码所示:

@Override
public void onBindViewHolder(final ShopViewHolder shopViewHolder, final int i) {
    shopViewHolder.shopNameTV.setText(shops.get(i).name);
    shopViewHolder.categoryTV.setText(shops.get(i).category);
    shopViewHolder.phoneNumberTV.setText(shops.get(i).phoneNumber);
    shopViewHolder.ratingsTV.setText(shops.get(i).ratings);
    shopViewHolder.emailTV.setText(shops.get(i).email);

    final Shop shop = shops.get(i);
    shopViewHolder.shopNameTV.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.d("test", "onclickk here" + i);
 //           Intent intent = new Intent(RVAdapter.this,CustomerGetQueueActivity.class);
        }
    }) ;
}
现在我只能将shopNameTV设置为可点击,但我希望整个卡都可以点击。当我尝试使用shopViewHolder.setOnClickListener时,它显示了一个错误,提示“无法解析方法setOnClickListener(anonymous.android.view.view.OnClickListener)”


如何将整个卡设置为可点击,而不仅仅是卡内的文本视图?

将传递给
ShopViewHolder的
视图
保存为成员变量名称,例如
cardView

然后在您的
onBindViewHolder
中使用以下代码:

shopViewHolder.cardView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

        }
}) ;

您正在做的是,将onClickListeners仅应用于特定字段。这就是为什么它不适用于整个视图。您几乎已经做到了,您需要做的就是

shopViewHolder.itemView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) {
        Log.d("test", "onclickk here" + i);
        //Intent intent = new Intent(RVAdapter.this,CustomerGetQueueActivity.class); 
    } 
}) ; 
公共最终视图项目视图

它是RecyclerView.ViewHolder的父视图

编辑

为了解决评论中提到的新问题:-


在为应用程序的特定组件创建意图时,需要将应用程序或组件上下文作为第一个参数传递给意图构造函数

步骤1:将上下文传递给适配器的构造函数

public class RVAdapter extend BaseAdapter{
Context mContext;
public RVAdapter(Context context, ... ) //Other parameters
{
mContext = context;
//Other code
}
步骤2:现在使用此上下文开始新活动

Intent intent = new Intent(mContext, CustomerGetQueueActivity.class);

在itemview中设置click listener。您好,谢谢您的帮助,我有点明白了。现在我有另一个问题,当我单击卡片时,我希望它指向另一个类,但当我插入类似intent intent=new intent(RVAdapter.this,CustomerGetQueueActivity.class)的代码时;还有一个错误,它说无法解析构造函数。如何解决此错误?在为应用程序的特定组件创建意图时,需要将应用程序或组件上下文作为第一个参数传递给意图构造函数。因此,最好的选择是将上下文传递给RVAdapter,然后将它用作新的意图(mContext,CustomerGetQueueActivity.class);
我想现在我应该得到一个投票结果,并接受答案:P