package com.freelib.multiitem.helper;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import com.freelib.multiitem.adapter.BaseItemAdapter;
import com.freelib.multiitem.item.BaseItemState;
/**
* 状态页(如空白错误页等)辅助类
* <p>
* 状态页展示时会作为RecyclerView的唯一的Item展示在界面中
* 注意:需要在RecyclerView设置完adapter后在初始化本实例
* Created by free46000 on 2017/4/23.
*/
public class StateViewHelper {
private RecyclerView recyclerView;
private BaseItemState itemState;
private RecyclerView.Adapter dataAdapter;
private BaseItemAdapter stateAdapter;
/**
* 需要在RecyclerView设置完adapter后在初始化本实例
*
* @param recyclerView
* @param itemState
*/
public StateViewHelper(@NonNull RecyclerView recyclerView, @NonNull BaseItemState itemState) {
this.recyclerView = recyclerView;
//记住RecyclerView初始的Adapter
this.dataAdapter = recyclerView.getAdapter();
if (dataAdapter == null) {
throw new IllegalArgumentException("请在设置完adapter后在初始化本实例!");
}
this.itemState = itemState;
}
/**
* 展示状态页
* <p>
* 为RecyclerView设置新的stateAdapter,本adapter中保存唯一的状态页Item{@link BaseItemState}
*/
public void show() {
if (stateAdapter != null) {
return;
}
stateAdapter = new BaseItemAdapter();
stateAdapter.addDataItem(itemState);
recyclerView.setAdapter(stateAdapter);
}
/**
* 隐藏状态页
* <p>
* 将RecyclerView的Adapter设置为初始化时记住的Adapter
*/
public void hide() {
if (dataAdapter == null) {
return;
}
stateAdapter = null;
recyclerView.setAdapter(dataAdapter);
}
}