我仍然是Firebase的新手,我想在这张图片Firebase中用蓝线问一下。如何将它们变成双线,最后添加所有蓝线。基本上,我想将所有价格相加并将其放在总价格的文本视图中。`有人可以帮我这是我到目前为止完成的代码吗?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_payment);
mRecyclerView2 = findViewById(R.id.recyclerview3);
mRecyclerView2.setHasFixedSize(true);
mRecyclerView2.setLayoutManager(new LinearLayoutManager(this));
mModel2 = new ArrayList<>();
mAuth = FirebaseAuth.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
String userID = user.getUid();
mAdapter2 = new ViewHolder2(Payment.this, mModel2);
mRecyclerView2.setAdapter(mAdapter2);
mDatabaseReference2 = FirebaseDatabase.getInstance().getReference(userID).child("Ordered");
mDatabaseReference2.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
double cost = 0;
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Model2 model2 = postSnapshot.child("price").getValue(Model2.class);
String venueLatString = String.valueOf(model2);
double total = Double.parseDouble(venueLatString);
cost = total + cost;
String finaltotal = String.valueOf(cost);
Total = findViewById(R.id.totalprice);
Total.setText(finaltotal);
mModel2.add(model2);
}
mAdapter2.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
如果我运行代码,它将崩溃。请帮忙。
答案 0 :(得分:0)
您可以像这样自定义模型
public class test {
String food;
String order;
String price;
public test() {
}
public test(String food, String order, String price) {
this.food = food;
this.order = order;
this.price = price;
}
public String getFood() {
return food;
}
public void setFood(String food) {
this.food = food;
}
public String getOrder() {
return order;
}
public void setOrder(String order) {
this.order = order;
}
public double getPrice() {
double value = 0;
try{
value = Double.parseDouble(price);
}
catch (Exception e){
value = 0;
}
return value;
}
public void setPrice(String price) {
this.price = price;
}
}
现在您可以使用 getPrice 直接获取双倍价值
并在您的适配器中
Test model2 = postSnapshot.getValue(Test.class);
并获得双倍价值
model2.getPrice
答案 1 :(得分:0)
出现此错误是因为您以错误的方式使用以下代码行:
Model2 model2 = postSnapshot.child("price").getValue(Model2.class);
子price
拥有一个String,而不是一个Model2
对象,因此这就是该错误的原因。
要解决此问题,请从上面的代码行中删除对.child("price")
的调用:
Model2 model2 = postSnapshot.getValue(Model2.class);
现在,要获得双倍价格,请使用以下代码行:
String stringValue = model2.getPrice();
double price = Double.parseDouble(stringValue);
将price
设为double
,您现在可以执行所需的任何操作。