【问题标题】:BaseAdapter not updating value in an ActivityBaseAdapter 不更新 Activity 中的值
【发布时间】:2015-11-27 07:37:02
【问题描述】:

我正在创建Shopping Cart 应用程序并获取每个项目的图像、名称、价格、数量和总计,但第一次没有获取所有列表项的 SubTotal,当我再次调用购物车活动时,然后获取所有购物车项目的小计。

注意: 问题是首先调用活动然后是适配器,因此我没有第一次获得 Total,我正在为适配器中的总值设置值。

CartActivity的完整代码检查here

CartAdapter的全码检查here

CartArrayList.java:

public class CartArrayList {

    static ArrayList<Cart> cartArraylist = new ArrayList<Cart>();

}

CartActivity.java

for(int d=0; d<CartArrayList.cartArraylist.size(); d++) {

Log.d("ITEM-NAME:", CartArrayList.cartArraylist.get(d).getName().toString());

Log.d("ITEM-QUANTITY:", String.valueOf(CartArrayList.cartArraylist.get(d).getQuantity()));

Log.d("ITEM-PRICE:", String.valueOf(CartArrayList.cartArraylist.get(d).getPrice()));

Log.d("ITEM-TOTAL:", String.valueOf(CartArrayList.cartArraylist.get(d).getTotal()));

subTotal = subTotal + CartArrayList.cartArraylist.get(d).getTotal();

Log.d("SUB TOTAL:", String.valueOf(subTotal));

}

DecimalFormat decimalFormat = new DecimalFormat("0.00");

textSubTotal.setText(getResources().getString(R.string.Rs)+" "+decimalFormat.format(subTotal));

}

CartAdapter.java:

        df = new DecimalFormat("0.00##");

        totalPrice = cart.getQuantity() * cart.getPrice();
        Log.d("Total:Adapter", String.valueOf(totalPrice));
        CartArrayList.cartArraylist.get(position).setTotal(totalPrice);
        holder.textViewTotal.setText(context.getResources().getString(R.string.Rs)+" "+df.format(cart.getTotal()));     

我的问题是为什么我没有获得以下价值:

Log.d("ITEM-TOTAL:", String.valueOf(CartArrayList.cartArraylist.get(d).getTotal()));

Logcat

11-27 13:03:16.518: D/ITEM-NAME:(4176): Item 1
11-27 13:03:16.518: D/ITEM-QUANTITY:(4176): 1
11-27 13:03:16.518: D/ITEM-PRICE:(4176): 999.0
11-27 13:03:16.518: D/ITEM-TOTAL:(4176): 0.0
11-27 13:03:16.518: D/SUB TOTAL:(4176): 0.0

11-27 13:03:16.518: D/ITEM-NAME:(4176): Item 2
11-27 13:03:16.518: D/ITEM-QUANTITY:(4176): 1
11-27 13:03:16.518: D/ITEM-PRICE:(4176): 1900.0
11-27 13:03:16.518: D/ITEM-TOTAL:(4176): 0.0
11-27 13:03:16.518: D/SUB TOTAL:(4176): 0.0

11-27 13:03:16.598: D/Total:Adapter(4176): 999.0
11-27 13:03:16.608: D/Total:Adapter(4176): 1900.0

【问题讨论】:

  • 请用适配器代码发布整个代码
  • @DroidDev 我已经发布了整个代码,请检查。
  • @Sophie 你在哪里定义 CartArrayList.cartArraylist??
  • @Hardy 检查更新的代码
  • 你通过this了吗?

标签: android android-activity arraylist adapter baseadapter


【解决方案1】:

@Sophie 你正在完全进入适配器,因为你正在这样做

 totalPrice = cart.getQuantity() * cart.getPrice();
    Log.d("Total:Adapter", String.valueOf(totalPrice));
    CartArrayList.cartArraylist.get(position).setTotal(totalPrice);

-->您正在设置总价,然后您将获得它,所以当您第一次设置总价时,请检查

 for(int d=0; d<CartArrayList.cartArraylist.size(); d++) {

        Log.d("ITEM-NAME:", CartArrayList.cartArraylist.get(d).getName().toString());

        Log.d("ITEM-QUANTITY:", String.valueOf(CartArrayList.cartArraylist.get(d).getQuantity()));

        Log.d("ITEM-PRICE:", String.valueOf(CartArrayList.cartArraylist.get(d).getPrice()));

        Log.d("ITEM-TOTAL:", String.valueOf(CartArrayList.cartArraylist.get(d).getTotal()));
CartArrayList.cartArraylist.setTotal((CartArrayList.cartArraylist.get(d).getQuantity())*(CartArrayList.cartArraylist.get(d).getPrice()));
        subTotal = subTotal + CartArrayList.cartArraylist.get(d).getTotal();

        Log.d("SUB TOTAL:", String.valueOf(subTotal));

    }

--> 如果仍然无法正常工作,请再次发布您的代码 :) 谢谢

【讨论】:

  • 是的,我知道这是我第一次获得价值的唯一问题,我已经发布了我的整个代码
  • @Sophie 首先试试这个代码,你会得到你的总数
  • 但我担心的是为什么我在 onCreate 中没有得到价值 CartArrayList.cartArraylist.get(d).getTotal())
  • @Sophie 因为您没有将值设置为第一次在适配器中设置的总数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多