【发布时间】:2016-12-23 10:16:43
【问题描述】:
大家好,
我有一个带有RecyclerView的片段。 RecyclerView 由 Firebase 'DatabaseReference' 对象填充,并且在该引用上我添加了一个 ValueListener,如下所示:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {
Log.d(TAG, "onCreateView");
View view = inflater.inflate(R.layout.fragment_home, container, false);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Do something
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "onCancelled", databaseError.toException());
}
});
ItemRecyclerViewAdapter adapter = new ItemRecyclerViewAdapter(activity, itemsDatabaseReference);
adapter.setHasStableIds(true);
// use a linear layout manager
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
DividerItemDecoration itemDecoration = new DividerItemDecoration(getContext(),
DividerItemDecoration.VERTICAL_LIST);
recyclerView.addItemDecoration(itemDecoration);
recyclerView.setAdapter(adapter);
return view;
}
ItemRecyclerViewAdapter 扩展 FirebaseRecyclerAdapter。问题是onDataChange 发生在onResume 之后,因此有时回收器是空的。我无法理解的是回收站视图并不总是空的。有时显示数据,有时不显示。
谢谢
【问题讨论】:
-
在将任何数据添加到回收站视图时,您是否在代码上调用了 adapter.notifyDatasetChaged()
-
嗨@ujjwalmainali,无论是否致电
adapter.notifyDataSetChanged()都没有关系。关键是回收站视图并不总是空的。所以我自己并不真正理解这个问题。
标签: android firebase firebase-realtime-database fragment firebaseui