OnClick Listener应用于整个卡片视图而不仅仅是textView

时间:2016-03-27 03:26:45

标签: 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.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)。

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

2 个答案:

答案 0 :(得分:4)

您正在做的是,仅将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); 
    } 
}) ; 
  

public final查看itemView

这是您的RecyclerView.ViewHolder的父视图。

修改

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

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

步骤1:将上下文传递给Adapter

的构造函数
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);

答案 1 :(得分:0)

将传递给Cursor cur = db.rawQuery( "select _id,* from your_table", null); 的{​​{1}}保存为成员变量名称,例如view

然后在ShopViewHolder

中使用以下代码
cardView