我已经使用卡片实现了回收站视图,我想在每张卡片上实现onClick功能。基本上我有两个类,MainActivity和RVAdapter类。
这就是我在Adapter类中实现onclick函数的方法:
@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);
}
}) ;
}
在包含卡片的xml文件中:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:onClick="onBindViewHolder"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/shopnameTV"
/>
然而,问题是,当我点击卡片时,它会引导我发出错误信息,指出onBindViewHolder不在主活动类中。
如何解决此错误?或者如何在onClick?
之后将变量传递给RVAdapter类而不是Main活动类答案 0 :(得分:0)
android:onClick属性仅在托管视图的Activity中存在指定方法时才有效。因此,在您的情况下,Android将使用此签名在活动上查找方法来处理点击:
public void onBindViewHolder(View v)
您看到的错误表明Android无法找到此方法。
相反,从视图XML中删除onClick属性并在卡片视图本身上注册一个单击侦听器,类似于您在shopViewHolder.shopNameTV中所做的操作。