EmptyRecyclerView 数据为空时显示指定view

来源:互联网 发布:2014matlab中对角矩阵 编辑:程序博客网 时间:2024/06/08 01:29
public class EmptyRecyclerView extends RecyclerView {    private View emptyView;    private static final String TAG = "EmptyRecyclerView";    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 EmptyRecyclerView(Context context) {        super(context);    }    public EmptyRecyclerView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public EmptyRecyclerView(Context context, AttributeSet attrs,                             int defStyle) {        super(context, attrs, defStyle);    }    private void checkIfEmpty() {        if (emptyView != null && getAdapter() != null) {            final boolean emptyViewVisible =                    getAdapter().getItemCount() == 0;            emptyView.setVisibility(emptyViewVisible ? VISIBLE : GONE);            setVisibility(emptyViewVisible ? GONE : VISIBLE);        }    }    @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();    }}
原创粉丝点击