将listview中的产品价格总和计算为字符串

ergxz8rk  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(299)

我是android开发的新手。我已经解决这个问题三天了。
我有一个对象类,它在一个listview中用三个字符串保存到firebase。

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;
}

但我想计算产品价格的总和。如果这是可能的字符串,我尝试了很多方法,但没有解决办法。
以下是从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;
}
yduiuuwa

yduiuuwa1#

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;
}
czfnxgou

czfnxgou2#

首先,在firebase数据库中将int值存储为字符串并不是一个好的做法。如果这样做,则需要将字符串的值解析为int

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

输出为: 10 .
对于firebase还有一个重要的想法,您需要使用并声明 vanzatorProduseList 内部列表 onDataChange() 方法,否则将始终 null . 这样做,tehn只需遍历列表,就这样。

zpf6vheq

zpf6vheq3#

我以为价格是便宜的。

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

相关问题