计算ListView中的产品价格总和为String

时间:2017-10-31 12:21:12

标签: java android listview firebase

我是Android开发的新手。我已经解决了这个问题3天了。

我有一个对象类,它被保存到Firebase中,在ListView中有三个字符串

public class VanzatorProduse {

public String produsId;
public String produs;
public String pret;

public VanzatorProduse(){

}

public VanzatorProduse(String produsId, String produs, String pret) {
    this.produsId = produsId;
    this.produs = produs;
    this.pret = pret;

}

public String getProdusId() {
    return produsId;
}

public String getProdus() {
    return produs;
}

public String getPret() {
    return pret;
}

但我想计算产品价格的总和。如果使用Strings可以做到这一点,我尝试了很多方法,但没有解决方案。

以下是从Firebase检索对象的代码:

 databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            produseVanzatorList.clear();
            for (DataSnapshot produsSnapshot : dataSnapshot.getChildren()){

                VanzatorProduse vanzatorProduse = produsSnapshot.getValue(VanzatorProduse.class);

                produseVanzatorList.add(vanzatorProduse);
            }

            VanzatorProduseList adapter = new VanzatorProduseList(ListaProduseActivity.this, produseVanzatorList);
            listViewProduse.setAdapter(adapter);
        }

我的适配器:

公共类VanzatorProduseList扩展了ArrayAdapter {

private Activity context;
private SparseBooleanArray selectedListItemsIds;
private List<VanzatorProduse> vanzatorProduseList;

public VanzatorProduseList(Activity context, List<VanzatorProduse> vanzatorProduseList){
    super(context, R.layout.list_produse_vanzator, vanzatorProduseList);
    this.context = context;
    selectedListItemsIds = new SparseBooleanArray();
    this.vanzatorProduseList = vanzatorProduseList;
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    LayoutInflater inflater  = context.getLayoutInflater();

    View listViewItem = inflater.inflate(R.layout.list_produse_vanzator, null, true);

    TextView textViewProdus1 = (TextView) listViewItem.findViewById(R.id.textViewProdus1);
    TextView textViewPret1 = (TextView) listViewItem.findViewById(R.id.textViewPret1);


    VanzatorProduse vanzatorProduse = vanzatorProduseList.get(position);

    textViewProdus1.setText(vanzatorProduse.getProdus());
    textViewPret1.setText(vanzatorProduse.getPret());

    return listViewItem;
}
public SparseBooleanArray getSelectedIds() {
    return selectedListItemsIds;
}

3 个答案:

答案 0 :(得分:3)

我认为预售为价格。

int totalPrice = 0;
for(VanzatorProduse v : produseVanzatorList)
        {
            int vPrice = Integer.parseInt(v.getPret());
            totalPrice = totalPrice + vPrice;
        }

答案 1 :(得分:1)

首先,将一个值存储为Firebase数据库中的字符串并不是一个好的做法。如果这样做,则需要将String的值解析为int。以下是如何执行此操作的示例:

String string = "10";
int valueOfString =  Integer.valueOf(string);
System.out.println(valueOfString);

输出结果为:10

对于Firebase,还有另一个重要的想法,您需要在vanzatorProduseList方法中使用并声明onDataChange()列表,否则它将始终为null。这样做,tehn只是通过List迭代,就是这样。

答案 2 :(得分:0)

int total_price;

//Suppose product_list contain the all products available in listView
List<VanzatorProduse> product_list;

for(int i = 0; i < product_list.size; i++){
   VanzatorProduse product = product_list.get(i);
   int product_price = Integer.parseInt(product.getPret());

   total_price += product_price;
}