android– 具有空视图的FirebaseRecyclerAdapter

android– 具有空视图的FirebaseRecyclerAdapter,第1张

概述我知道有很多方法可以为RecyclerView提供一个空视图.但我的问题是针对FirebaseRecyclerView.我的布局是:<RelativeLayoutxmlns:android="http://schemas.android.com/apkes/android"android:layout_width="match_parent"android:layout_height="match_parent">

我知道有很多方法可以为RecyclerVIEw提供一个空视图.但我的问题是针对FirebaseRecyclerVIEw.

我的布局是:

<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"><androID.support.v7.Widget.RecyclerVIEw    androID:ID="@+ID/Feed_recycler_vIEw"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:scrollbars="vertical" /><Progressbar    androID:ID="@+ID/Feed_loading"        androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_centerInParent="true"    androID:visibility="gone"/></relativeLayout>

所以我在RecyclerVIEw填充其项目之前显示正在加载Progressbar.现在如果服务器没有任何项目怎么办?在这种情况下,我的RecyclerVIEw始终为空,我的Loading Progressbar始终对用户可见.

因此,我希望显示一些空布局,而不是无限期地显示Progressbar.例如. “没有找到数据”或类似的消息.

最终结果应该是:Progressbar应该显示,直到数据加载到RecyclerVIEw,一旦数据加载,Progressbar应该是不可见的.但是如果服务器中没有数据,则应显示一些空布局而不是Progressbar.

在普通的RecyclerVIEw中,我们有一个数据集(某些ArrayList等),如果它是空的,那么我们可以显示那个空布局.但是对于FirebaseRecyclerAdapter,我在我的Activity或Context中没有Snapshot的引用.我也没有任何回调告诉我服务器中没有数据.

任何解决方法都会有很大帮助.

解决方法:

这是我会尝试的.首先查看下面链接问题的已接受答案.它提供了一些非常好的洞察Firebase查询的工作方式.我认为信息是受信任的,因为答案是Firebase团队的某个人:

How to separate initial data load from incremental children with Firebase?

因此,基于上面链接的问题的答案以及FirebaseRecyclerAdapter由使用ChildEventListener填充的FirebaseArray支持的事实,我将在用于填充FirebaseRecyclerAdapter的相同数据库引用上添加Single值事件侦听器.像这样的东西:

//create database reference that will be used for both the//FirebaseRecyclerAdapter and the single value event ListenerdbRef = FirebaseDatabase.getInstance().getReference();//setup FirebaseRecyclerAdaptermAdapter = new FirebaseRecyclerAdapter<Model, YourVIEwHolder>(                Model.class, R.layout.your_layout, YourVIEwHolder.class, dbRef) {                @OverrIDe                public voID populateVIEwHolder(YourVIEwHolder holder, Model model, int position){                     //your code for populating each recycler vIEw item                };mRecyclerVIEw.setAdapter(mAdapter);//add the Listener for the single value event that will function//like a completion Listener for initial data load of the FirebaseRecyclerAdapterdbRef.addListenerForSingleValueEvent(new ValueEventListener() {             @OverrIDe             public voID onDataChange(DataSnapshot dataSnapshot) {                 //onDataChange called so remove progress bar                 //make a call to dataSnapshot.hasChildren() and based                  //on returned value show/hIDe empty vIEw                  //use helper method to add an Observer to RecyclerVIEw                 }             @OverrIDe             public voID onCancelled(DatabaseError databaseError) {             }      });

这将处理RecyclerVIEw的初始设置.在单值事件侦听器上调用onDataChange时,使用辅助方法将观察器添加到FirebaseRecyclerAdapter以处理对数据库位置的任何后续添加/删除.

mObserver = new RecyclerVIEw.AdapterDataObserver() {            @OverrIDe            public voID onItemRangeInserted(int positionStart, int itemCount) {                //perform check and show/hIDe empty vIEw            }            @OverrIDe            public voID onItemRangeRemoved(int positionStart, int itemCount) {                //perform check and show/hIDe empty vIEw            }           };mAdapter.registeradapterDataObserver(mObserver);
总结

以上是内存溢出为你收集整理的android – 具有空视图的FirebaseRecyclerAdapter全部内容,希望文章能够帮你解决android – 具有空视图的FirebaseRecyclerAdapter所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1100685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存