- 支持加载更多
- 支持多种item的添加
- 支持添加头部及给予数据动态刷新头部UI
- 支持单类型item线性与瀑布流显示的切换
- 支持加载状态的失败时,可重新触发加载更多
- 已支持多类型item的线性与瀑布流显示切换
- 新增:已支持多类型item的交叉内存复用(可做类似淘宝item的效果)
- 支持每注册一种item添加各自的OnItemClickListener(条目点击事件)
- 支持header添加点击的监听
- 在UniversalViewHolder提供了保护成员mActivity,更加方便在UniversalViewHolder可以在item处理自己的业务逻辑
- 对UniversalAdapter构造以及UniversalProvider结构以及UniversalAdapter有了小变化,使得UniversalAdapter使用起来更加方便
- 与1.3.1版本不兼容
使用Gradle:
dependencies {
compile 'com.hanshao:universallibrary:1.3.2'
}
mUniversalAdapter = new UniversalAdapter(activity);
public class DemoViewHolder extends UniversalViewHolder<数据类型> {
public DemoViewHolder(View v) {
super(v);
}
@Override
protected void initView(View view) {
//对绑定的view进行初始化操作
}
@Override
public void refreshUi(ItemInfo data) {
//item显示时绑定的数据,进行刷新Item的UI
}
}
public class DemoProvider extends UniversalProvider {
public DemoProvider(int resId) {
super(resId);
}
@Override
public UniversalViewHolder realNewInstance(View v) {
//提供ViewHolder
return new DemoViewHolder(v);
}
}
//未添加item点击监听
mUniversalAdapter.registerHolder(key,数据集合,new DemoProvider(布局资源id));
//添加item点击监听
mUniversalAdapter.registerHolder(key,数据集合,new DemoProvider(布局资源id),new OnItemClickListener<E>(){
void onItemClick(int recyclerPosition,int dataPosition,E itemData){
//recyclerPosition:item在RecyclerView的位置
//dataPosition:itemData在数据集合(List)中所在的索引
//itemData:item所需的对应的数据
}
});
mRecyclerView.setAdapter(mUniversalAdapter);
//未添加item监听,需监听item点击事件如上
mUniversalAdapter.registerHolder(key,数据集合,new DemoProvider(布局资源id));
//未添加item监听,需监听item点击事件如上
mUniversalAdapter.registerHolder(key,数据集合,new SecondProvider(布局资源id));
mUniversalAdapter.registerHolder(key,infos,new LineProvider(context,线性资源id),new WaterfalProvider(context,瀑布流资源Id));
mUniversalAdapter.switchLayoutManager(new LinearLayoutManager(context));
mUniversalAdapter.switchLayoutManager(new StaggeredGridLayoutManager(2,LinearLayoutManager.VERTICAL));
mUniversalAdapter.setOnLoadMoreListener(监听器);
//注册Item时所对应的key
mUniversalAdapter.addDatas(key,数据集合);
//进行刷新
mUniversalAdapter.notifyMoreFinish(true);
mUniversalAdapter.notifyMoreFinish(false);
mUniversalAdapter.setLoadMoreFailed();
mUniversalAdapter.registerHolder(key,datas,new ViewHolderProvider(context,资源布局Id));
当你需要加载更多数据刷新UI,若想复用之前相同item,必须这样调用
mUniversalAdapter.registerHolder(key,newDatas,new ViewHolderProvider(context,资源布局Id));
//刷新UI
mUniversalAdapter.notifyMoreFinish(true);
确保key相同,否则复用不了先前注册的item。