gpt4 book ai didi

android - 在 ListView 项目中单击按钮的自定义监听器

转载 作者:行者123 更新时间:2023-11-29 20:46:29 26 4
gpt4 key购买 nike

我在 Adapter 类中为 Button 创建了一个 Custom Listener interface,我遵循了这个教程: http://www.c-sharpcorner.com/UploadFile/9e8439/create-custom-listener-on-button-in-listitem-listview-in-a/

适配器:

        holder.btnQtyIncrease.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

if (customListner != null) {
customListner.onButtonClickListner(position);
}

cart = cartArrayList.get(position);
holder.textViewQuantity.setTag(cart);

if(cart.getQuantity() == 9) {
Toast.makeText(context, "Already reached", Toast.LENGTH_LONG).show();
return ;
}
else
{
cart.setQuantity(cart.getQuantity() + 1);
holder.textViewQuantity.setText(String.valueOf(cart.getQuantity()));

totalPrice = cart.getQuantity() * cart.getPrice();

CartArrayList.cartArraylist.get(position).setTotal(totalPrice);
holder.textViewTotal.setText(cart.getTotal());
}

}
});

.....
return convertView;
}

我在 Activity实现了 Listener,如下所示:

public class CartActivity extends Activity implements customButtonListener {    
......

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("CartActivity-onCreate", "onCreate");

setContentView(R.layout.activity_cart);

......

}


@Override
public void onResume()
{
super.onResume();
Log.d("CartActivity-onResume", "onResume");
}

@Override
public void onButtonClickListner(int position) {

totalPrice = CartArrayList.cartArraylist.get(position).getQuantity() * CartArrayList.cartArraylist.get(position).getPrice();
CartArrayList.cartArraylist.get(position).setTotal(totalPrice);

subTotal = subTotal + totalPrice;
}

}

正如您在 for 循环 中看到的那样,我正在设置获取每个列表项 的总数 ,然后计算 ArrayList 项的 subTotal...

但每当我点击 btnQtyIncrease 时,它都会改变 list item 价格的 total,但不会影响 小计 金额

最佳答案

你应该以某种方式改变你的逻辑,它只在适配器中计算小计,然后将最终值传递给界面,界面将简单地在 TextView 中设置它

所以你的代码应该是这样的:

holder.btnQtyIncrease.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

cart = cartArrayList.get(position);
holder.textViewQuantity.setTag(cart);

if(cart.getQuantity() == 9) {
Toast.makeText(context, "Already reached", Toast.LENGTH_LONG).show();
return ;
}
else
{
cart.setQuantity(cart.getQuantity() + 1);
holder.textViewQuantity.setText(String.valueOf(cart.getQuantity()));

totalPrice = cart.getQuantity() * cart.getPrice();

CartArrayList.cartArraylist.get(position).setTotal(totalPrice);
holder.textViewTotal.setText(cart.getTotal());
}

}
// calculate total here
if (customListner != null) {
customListner.onButtonClickListner(getTotalValue());
}

});

在适配器中定义一个方法 getTotalValue,它将遍历数组并找到 subTotal 值。

然后在textView中简单的设置一下

@Override
public void onButtonClickListner(float subTotal ) {
txtView.setText(String.valueOf(subTotal));
}

相应地,将接口(interface)签名更改为:

public void onButtonClickListner(float total);

关于android - 在 ListView 项目中单击按钮的自定义监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30255663/

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