我正在尝试在回收站视图中实现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)。
如何将整张卡设置为可点击而不仅仅是卡内的文字视图?
答案 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