我是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;
}
答案 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;
}