因此,问题在于,每当我为回收者视图设置空视图时,它总是显示空视图。我尝试遵循一些建议的解决方案,例如此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是否没有任何子代,如果没有任何子代,则设置为空视图。再次出现的问题是,在onDataChange()之前先调用setAdapter()。

最佳答案

recView.setAdapter(adapter)放在recView.setEmptyView(v.findViewById(R.id.empty_view))之后以便更好地使用ProgressBarProgressDialog

关于android - 如何处理Firebase Adapter RecyclerView空 View ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43143134/

10-09 07:26