我为适配器类中的Button
点击创建了自定义侦听器界面,我按照教程:{{3 }}
适配器:
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;
}
我implemented Listener
Activity
就像这样:
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循环中看到的那样,我是每个列表项的setting
和getting total
,然后计算 ArrayList项的subTotal ...
但每当我点击 btnQtyIncrease 时,它会以list item
价格的总进行更改,但不会影响subTotal
金额< / p>
答案 0 :(得分:2)
你应该以某种方式改变你的逻辑,它只计算适配器中的subTotal,然后只将最终值传递给接口,然后将其设置为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));
}
因此,将界面签名更改为:
public void onButtonClickListner(float total);
答案 1 :(得分:0)
如何在适配器类中更改
时更新Activity中的值
更新btnQtyIncrease
按钮上的活动数据。使用接口创建自定义事件侦听器,当在Quantity中进行任何更改时,将在Activity中触发。
请参阅以下示例以创建自定义侦听器: