如何给RecyclerView设置一个emptyView?

网上这些资料好像比较少,有的我也不太懂,还请大神们指点一个简单易懂的。

斯蒂芬大帝
浏览 1254回答 2
2回答

白猪掌柜的

设置一个Recyclerview的平级view,平时把它GONE掉,recyclerview的item为0时把它visible出来不久好了么

一只萌萌小番薯

给楼主之前写的代码,将RecycleView 重写成如下:public class RecyclerViewEmptySupport extends RecyclerView {    private View emptyView;    final private AdapterDataObserver observer = new AdapterDataObserver() {        @Override        public void onChanged() {            checkIfEmpty();        }        @Override        public void onItemRangeInserted(int positionStart, int itemCount) {            checkIfEmpty();        }        @Override        public void onItemRangeRemoved(int positionStart, int itemCount) {            checkIfEmpty();        }    };    public RecyclerViewEmptySupport(Context context) {        super(context);    }    public RecyclerViewEmptySupport(Context context, AttributeSet attrs) {        super(context, attrs);    }    public RecyclerViewEmptySupport(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    @Override    public void setAdapter(Adapter adapter) {        final Adapter oldAdapter = getAdapter();        if (oldAdapter != null) {            oldAdapter.unregisterAdapterDataObserver(observer);        }        super.setAdapter(adapter);        if (adapter != null) {            adapter.registerAdapterDataObserver(observer);        }        checkIfEmpty();    }    public void setEmptyView(View emptyView) {        this.emptyView = emptyView;        checkIfEmpty();    }    void checkIfEmpty() {        if (emptyView != null && getAdapter() != null) {            final boolean emptyViewVisible = getAdapter().getItemCount() == 0;            emptyView.setVisibility(emptyViewVisible ? VISIBLE : GONE);            setVisibility(emptyViewVisible ? GONE : VISIBLE);        }    }}外部调用的时候执行mRecyclerView.setEmptyView(mEmptyView);即可。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java