RecyclerVeiw设置EmptyView

2017-04-24  本文已影响0人  mecreate

添加setEmptyView
ListView提供了setEmptyView()设置Adapter数据为空时的View视图。RecyclerView虽然没提供直接的API,但是也可以很简单地实现。

public class EmptyRecyclerView extends RecyclerView{

     private View mEmptyView;

     private AdapterDataObserver mObserver = new AdapterDataObserver() {
         @Override
         public void onChanged() {
             Adapter adapter = getAdapter();
             if(adapter.getItemCount() == 0){
                 mEmptyView.setVisibility(VISIBLE);
                 EmptyRecyclerView.this.setVisibility(GONE);
             } else{
                 mEmptyView.setVisibility(GONE);
                 EmptyRecyclerView.this.setVisibility(VISIBLE);
             }
         }

         public void onItemRangeChanged(int positionStart, int itemCount) {onChanged();}
         public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {onChanged();}
         public void onItemRangeRemoved(int positionStart, int itemCount) {onChanged();}
         public void onItemRangeInserted(int positionStart, int itemCount) {onChanged();}
         public void onItemRangeChanged(int positionStart, int itemCount, Object payload) {onChanged();}
     };

     public EmptyRecyclerView(Context context, @Nullable AttributeSet attrs) {
         super(context, attrs);
     }

     public void setEmptyView(View view){
         this.mEmptyView = view;
         ((ViewGroup)this.getRootView()).addView(mEmptyView); //加入主界面布局
     }

     public void setAdapter(RecyclerView.Adapter adapter){
         super.setAdapter(adapter);
         adapter.registerAdapterDataObserver(mObserver);
         mObserver.onChanged();
     }
 }    
上一篇 下一篇

猜你喜欢

热点阅读