android - Recyclerview 未更新新数据

标签 android firebase firebase-realtime-database fragment firebaseui

大家好,

我有一个带有 RecyclerView 的 fragment 。该 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 之后,因此有时回收器是空的。我无法理解的是,回收者 View 并不总是空的。有时显示数据,有时不显示。

谢谢

最佳答案

我认为,如果您使用 FirebaseRecyclerAdapter (或由此扩展的任何类)作为 RecyclerView 适配器,则应该设置 recyclerView.setHasFixedSize(false)。因此,recyclerView 知道数据会不断更新。

关于android - Recyclerview 未更新新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41299450/

相关文章:

android - 如何保留具有 GLSurfaceView 的 Activity 的状态

javascript - 如何在 Javascript 中使用 userID 查询 Firebase 中的数据?

java - 从 Firebase 实时数据库检索特定数据

javascript - 如何在 Firebase 3 中创建用户而不对其进行身份验证?

android - 找不到 com.android.tools.build :gradle:3. 4.2

swift - 有没有办法在 Swift 中向已创建的 Firebase 数据库添加新列?

java - 如何将上传到云存储的图片调整为指定大小?

java - 输入字符串未知时的字符串分割(Java Android 短信分割转发)

android - 在将 View 添加到 ViewGroup 之前,在后台线程中创建和修改 View 是否安全?

android - 将视频从 asp.net core web API 流式传输到 Android/iOS