gpt4 book ai didi

android - View.getId() 不工作

转载 作者:太空狗 更新时间:2023-10-29 13:14:59 24 4
gpt4 key购买 nike

我是 android 编程的新手。我想更新 recyclerview 的卡片 View 布局中的项目。这是 recyclerview 的 ListRowViewHolder

public static class ListMenuRowViewHolder extends RecyclerView.ViewHolder
{
protected NetworkImageView thumbnail;
protected TextView itemname;
protected TextView price;
protected TextView itemtype;
protected TextView quantity;
protected ImageView add;
protected ImageView sub;
protected ImageView imageView;
protected CardView item_layout;

public ListMenuRowViewHolder(View itemView) {
super(itemView);


this.thumbnail=(NetworkImageView)itemView.findViewById(R.id.recom);
this.imageView=(ImageView)itemView.findViewById(R.id.categ);
this.itemname=(TextView)itemView.findViewById(R.id.itemvalue);
this.add=(ImageView)itemView.findViewById(R.id.add);
this.sub=(ImageView)itemView.findViewById(R.id.sub);
this.price=(TextView)itemView.findViewById((R.id.price));
this.quantity=(TextView)itemView.findViewById((R.id.quantity));
this.item_layout=(CardView)itemView.findViewById((R.id.item_layout));
itemView.setClickable(true);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("myname", "rohit");
ItemscardClickListener.onClick(v, getAdapterPosition());
}
});

}

}

这是我尝试更新数量的地方

 mAdapter.setItemsCardClickListener(new ItemsCardClickListener() {
@Override
public void onClick(View v, int position) {

int q;
switch (v.getId())
{
case R.id.add : q= Integer.parseInt(mAdapter.getmOrder().get(position).getQuantity());
q++;
Log.e("mishra", String.valueOf(q));
mAdapter.getmOrder().get(position).setQuantity(String.valueOf(q));
mAdapter.notifyDataSetChanged();
break;
case R.id.sub : q=Integer.parseInt(mAdapter.getmOrder().get(position).getQuantity());
if(q>0)
q--;
mAdapter.getmOrder().get(position).setQuantity(String.valueOf(q));
mAdapter.notifyDataSetChanged();
break;
case R.id.quantity:
Log.e("mishra", "hihi");
break;
default:Log.e("mishra", "hi");


}
}
});

每次当我点击 View 中的一个项目时,它们都会被点击,但我没有使用 v.getId() 获取 ID。交换机始终进入默认情况。请提供一些解决方案。

最佳答案

您在包含所有其他 subview 的 View 上设置 OnClickListener,而不是在各个 subview 本身上。您应该让 ListMenuRowViewHolder 实现 View.OnClickListener 并在每个单独的 View 上设置一个监听器,如下所示:

sub.setOnClickListener(this);
price.setOnClickListener(this);
//etc

你可以实现

@Override
public void onClick(View v) {
//Now the correct subview gets passed to your switch in the Activity
ItemscardClickListener.onClick(v, getAdapterPosition());
}

ListMenuRowViewHolder 中。

所以它看起来像这样:

public static class ListMenuRowViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

protected NetworkImageView thumbnail;
protected TextView itemname;
protected TextView price;
protected TextView itemtype;
protected TextView quantity;
protected ImageView add;
protected ImageView sub;
protected ImageView imageView;
protected CardView item_layout;

public ListMenuRowViewHolder(View itemView) {
super(itemView);

this.thumbnail = (NetworkImageView) itemView.findViewById(R.id.recom);
this.imageView = (ImageView) itemView.findViewById(R.id.categ);
this.itemname = (TextView) itemView.findViewById(R.id.itemvalue);
this.add = (ImageView) itemView.findViewById(R.id.add);
this.sub = (ImageView) itemView.findViewById(R.id.sub);
this.price = (TextView) itemView.findViewById(R.id.price);
this.quantity = (TextView) itemView.findViewById(R.id.quantity);

this.add.setOnClickListener(this);
this.sub.setOnClickListener(this);
//Do this for each view
}

@Override
public void onClick(View v) {
Log.e("myname", "rohit");
ItemscardClickListener.onClick(v, getAdapterPosition());
}
}

关于android - View.getId() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35818461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com