如何处理 Firebase Adapter RecyclerView 空视图?

文斯·冈萨雷斯

所以问题是,每当我为回收者视图设置空视图时,它总是显示空视图。我尝试遵循一些建议的解决方案,例如此 url 中的解决方案:FirebaseRecyclerAdapter with empty view,但问题是 Firebase 侦听器是异步的并在其自己的线程上运行。在设置空视图之前,片段的 onCreateView 方法已经返回视图,因此未正确设置空视图。还有其他方法可以实现 FirebaseRecyclerAdapter 的空视图设置吗?

以下是代码片段:

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    v = inflater.inflate(R.layout.activity_list, container, false);

    initializeFilter();

    Log.d("AttendanceFragment", filter.getTab() + "");

    Firebase.setAndroidContext(getContext());

    //filter(filter);
    handleFilter();

    if(getContext() != null) {
        adapter = new AttendanceAdapter(Attendance.class, R.layout.list_item, AttendanceAdapter.AttendanceViewHolder.class, mDatabase);

        mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Log.d("DATA_CHANGED", dataSnapshot.hasChildren() + "");

                if(!dataSnapshot.hasChildren()){
                    Log.d("SETTING", setEmpty + "");
                    if(filter.getTab() == 1) {
                        empty = (TextView) v.findViewById(R.id.empty_view);
                        empty.setText("No finished attendance yet");
                    }

                    recView.setEmptyView(v.findViewById(R.id.empty_view));
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

        Log.d("FIREBASE", recView.getAdapter().getItemCount() + "");
    }

    adapter.setOnItemClickListener(new AttendanceAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(String name) {
            Toast.makeText(getContext(), name, Toast.LENGTH_SHORT).show();
        }
    });

    recView.setAdapter(adapter);

    return v;
}

它基本上检查 dataSnapshot 是否没有任何孩子,如果它没有任何孩子,它会设置空视图。再次出现的问题是 setAdapter() 在 onDataChange() 之前先被调用。

乌塞玛·阿鲁阿

放在recView.setAdapter(adapter)后面recView.setEmptyView(v.findViewById(R.id.empty_view))以获得更好的练习使用ProgressBarProgressDialog

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

RecyclerView 如何处理不同视图的回收?

使用 RecyclerView 时如何处理与视图交互的 UI 更改?

如何在RecyclerView.Adapter for Snackbar中获取视图?

如何使用RecyclerView显示空视图?

如何处理我的数据模型类以将 Firebase Firestore 数据导入 recyclerView?

如何从 RecyclerView Adapter 打开片段?

空的Recyclerview Firebase

视图在RecyclerView Adapter的onBindViewHolder中返回NullPointerException

如何处理项目单击侦听器上的行及其内部视图的RecyclerView

在收到Firebase消息时在RecyclerView Adapter中添加列表项

RecyclerView上的空视图

如何使用ViewBinding在RecyclerView.Adapter?

如何RecyclerView.Adapter使用onActivityResult

如何从 RecyclerView Adapter 调用 ViewModel.delete?

如何使用 RecyclerView 完成 Adapter 类的活动

如何处理 recyclerView 主体 clickListener

如何处理嵌套RecyclerView中的单击

如何处理 RecyclerView 中的点击事件

RecyclerView.Adapter notifyItemRangeChanged()导致错误视图的重新绑定

更改RecyclerView.Adapter时刷新片段视图

在RecyclerView.Adapter中绑定视图时发生NullPointerException

Firebase UI RecyclerView - 处理映射

如何处理[NSDate]和Firebase

Recyclerview Adapter(Android)中的数据处理位置

仅当RealmResults为空时,如何为RecyclerView可靠地显示空视图

RecyclerView Adapter性能方法

RecyclerView Adapter + 数据绑定

RecyclerView Adapter使对象无效

当removeValue时,Firebase Recycler Adapter不显示视图属性