【发布时间】:2017-06-25 19:11:11
【问题描述】:
(对不起,我的英语不好)有一个listView 需要由FirebaseDatabase 填充,该setPersistenceEnabled(true) 启用了离线模式。 listView 在在线模式下完美填充,但在离线模式下,listView 不会填充,直到 listView 中有一个之前已在线同步的视图。
我的意思是,如果我在安装后第一次在离线模式下使用应用程序以在离线模式下添加第一个数据(listView 中还没有视图),offline cache 正在写入,但 onDataChange没有被触发,之后如果应用程序上线,listView 会自动填充我之前在离线模式下输入的数据,之后listView 即使在离线模式下也能正常工作。
代码是:
private void getAndSetItem(){
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference itemReference = firebaseDatabase.getReference().child("groups").child(intent.getStringExtra("groupID"))
.child("items").child(hiddenUserID);
itemReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<Item> itemsArray = new ArrayList<Item>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
itemsArray.add(snapshot.getValue(Item.class));
}
ItemExtractor itemExtractor = new ItemExtractor(itemsArray);
CustomAdapterForItemList adapter = new CustomAdapterForItemList(ItemPage.this, itemExtractor.getItemNameList(),
itemExtractor.getItemPriceList(), itemExtractor.getItemQuantity(), itemExtractor.getDate());
listView.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
【问题讨论】:
标签: android firebase firebase-realtime-database