0
我有下面的代碼,並且firebase中有2條記錄。addListenerForSingleValueEvent被執行兩次,每個記錄
ref.child("Orders").orderByChild("orderid").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
final ArrayList<OrderBean> offlineOrders = db.getWaterOrder();
if (offlineOrders != null && !offlineOrders.isEmpty()) {
for (OrderBean eachrow : offlineOrders) {
flag = eachrow.getFlag();
if (flag.equals("M")) {
if (postSnapshot != null) {
if (postSnapshot.child("id").getValue().equals(orderid)) {
postSnapshot.getRef().removeValue();
OrderBean orderbean = new OrderBean(orderid, vname, quan, price, date, time);
ref.child("Orders").push().setValue(orderbean); //push the record into firebase
orderslist.add(orderbean);
orderAdapter.notifyDataSetChanged();
}
else {
.......
OrderBean orderbean = new OrderBean(orderid, vname, quan, price, date, time);
orderslist.add(orderbean);
}
}
}
else {
........
OrderBean orderbean = new OrderBean(orderid, vname, quan, price, date, time);
orderslist.add(orderbean);
}
}
db.editOrderFlag(orderid);
}
else {
..........
OrderBean orderbean = new OrderBean(orderid, vname, quan, price, date, time);
orderslist.add(orderbean);
}
}
OrderAdapter orderAdapter = new OrderAdapter(Myorders.this, orderslist);
listView.setAdapter(orderAdapter);
listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
listView.setStackFromBottom(false);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我認爲
ref.child("Orders").orderByChild("orderid").addListenerForSingleValueEvent(new ValueEventListener() {
將得到每個記錄執行一次。但是每條記錄都會執行兩次。結果我的訂單列表有重複,因此我的適配器顯示每個記錄兩次。
任何人都可以幫助我瞭解我的代碼有什麼問題嗎?
謝謝
薩蒂亞
謝謝......我想我明白你在說什麼。我想,我將不得不在我的offlineOrders if子句中修改代碼。 – Satya