RecyclerView设置空数据视图

来源:互联网 发布:ltp1是什么端口 编辑:程序博客网 时间:2024/04/28 01:38

前言

我们在使用ListView的时候,如果现在没有数据,通过设置setEmptyView()来展示一个空数据视图,但是RecyclerView并没有这样的方法可以使用,那么如果给RecyclerView添加这一功能,下边给出实现方案!

方案

直接上代码:

public class RecyclerViewForEmpty extends RecyclerView {    private View emptyView;    private AdapterDataObserver observer = new AdapterDataObserver() {        @Override        public void onChanged() {//设置空view原理都一样,没有数据显示空view,有数据隐藏空view            Adapter adapter = getAdapter();            if (adapter.getItemCount() == 0) {                emptyView.setVisibility(VISIBLE);                RecyclerViewForEmpty.this.setVisibility(GONE);            } else {                emptyView.setVisibility(GONE);                RecyclerViewForEmpty.this.setVisibility(VISIBLE);            }        }        @Override        public void onItemRangeChanged(int positionStart, int itemCount) {            onChanged();        }        @Override        public void onItemRangeChanged(int positionStart, int itemCount, Object payload) {            onChanged();        }        @Override        public void onItemRangeInserted(int positionStart, int itemCount) {            onChanged();        }        @Override        public void onItemRangeRemoved(int positionStart, int itemCount) {            onChanged();        }        @Override        public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {            onChanged();        }    };    public RecyclerViewForEmpty(Context context) {        super(context);    }    public RecyclerViewForEmpty(Context context, @Nullable AttributeSet attrs) {        super(context, attrs);    }    public void setEmptyView(View view) {        this.emptyView = view;        ((ViewGroup) this.getRootView()).addView(view);    }    @Override    public void setAdapter(Adapter adapter) {        super.setAdapter(adapter);        adapter.registerAdapterDataObserver(observer);        observer.onChanged();    }}
原创粉丝点击