gpt4 book ai didi

android - 单击一个按钮触发 Android RecyclerView 中的另一个 Button

转载 作者:搜寻专家 更新时间:2023-11-01 09:25:29 27 4
gpt4 key购买 nike

我目前正在开发电子商务 Android 应用程序。在我的 recyclerview 中,有 13 种产品是从数据库中动态填充的。当我单击列表中的第一个按钮时,它还会更改列表中第 11 个按钮的按钮文本(我编码以在单击按钮时将按钮文本从“添加”更改为“删除”)。与第二个按钮一样,单击会更改第 12 个 View 按钮的文本。在日志中我注意到两个按钮具有相同的内存值。我做错了什么吗?

这是点击 3 次不同按钮(第 1、11 和第 2 个按钮)时生成的日志:

android.support.v7.widget.AppCompatButton{9b877fd VFED..C.. ...P.... 740,120-1010,240 #7f090024 app:id/button}
android.support.v7.widget.AppCompatButton{9b877fd VFED..C.. ...P.... 740,120-1010,240 #7f090024 app:id/button}
android.support.v7.widget.AppCompatButton{b7dcb1b VFED..C.. ...P.... 740,120-1010,240 #7f090024 app:id/button}

@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
Glide.with(mContext)
.asBitmap()
.load(productsList.get(position).getImage())
.into(holder.imageView);

holder.itemname.setText(productsList.get(position).getName());
holder.itemprice.setText(productsList.get(position).getPrice());
holder.itemprice_g.setText(productsList.get(position).getPrice_g());

holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position1 = holder.getAdapterPosition();
if(!productsList.get(position1).isAddedTocart())
{
productsList.get(position1).setAddedTocart(true);
String x = productsList.get(position1).getName().toString();
Log.i("log",""+holder.button);
holder.button.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
holder.button.setPadding(0,0,0,0);
holder.button.setText("Remove");

((AddorRemoveCallbacks)mContext).onAddProduct();

}
else
{
productsList.get(position1).setAddedTocart(false);
holder.button.setText("Add");
holder.button.setPadding(12,0,0,0);
holder.button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_shopping_cart_black_24dp, 0, 0, 0);
((AddorRemoveCallbacks)mContext).onRemoveProduct();
}
}
});
}

最佳答案

onBindViewHolder中,你应该先初始化你的holder.button的状态,在setOnClickListener之前,例如:

...
holder.itemname.setText(productsList.get(position).getName());
holder.itemprice.setText(productsList.get(position).getPrice());
holder.itemprice_g.setText(productsList.get(position).getPrice_g());

if (productsList.get(position1).isAddedTocart()) {
holder.button.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
holder.button.setPadding(0,0,0,0);
holder.button.setText("Remove");
} else {
holder.button.setText("Add");
holder.button.setPadding(12,0,0,0);
holder.button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_shopping_cart_black_24dp, 0, 0, 0);
}

holder.button.setOnClickListener(new View.OnClickListener() {
...

关于android - 单击一个按钮触发 Android RecyclerView 中的另一个 Button,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51035701/

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