您的位置:首页 > 移动开发 > Android开发

Recyclerview 多种 item 布局的通用 Adapter MultiItemAdapter

2017-01-23 13:51 387 查看
这个多种item的通用Adapter继承的CommonAdapter  是上一篇 打造
Recyclerview 的万能 Adapter  的内容


/**
* 多种 item 布局的通用 adapter
* 继承RecyclerView 的通用 CommonAdapter
* Created by suwenlai on 16-12-29.
*/

public abstract class MultiItemAdapter<T> extends CommonAdapter {

private MultiItemTypeSupport<T> mMultiItemTypeSupport;

/**
* 构造方法
* @param datas
* @param context
* @param multiItemTypeSupport  多种 item 布局支持接口
*/
public MultiItemAdapter(List<T> datas, Context context, MultiItemTypeSupport<T> multiItemTypeSupport) {
super(datas, context, -1);
mMultiItemTypeSupport = multiItemTypeSupport;
}

@Override
public int getItemViewType(int position) {
return mMultiItemTypeSupport.getItemViewType(position, (T) mDatas.get(position));
}

@Override
public CommonHolder onCreateViewHolder(ViewGroup parent, int viewType) {
int layoutId = mMultiItemTypeSupport.getLayoutId(viewType);
CommonHolder holder = CommonHolder.getHolder(mContext, parent, layoutId);
return holder;
}

}

MultiItemTypeSupport接口在这里  

* 多种 item 布局支持接口
* Created by suwenlai on 16-12-29.
*/

public interface MultiItemTypeSupport<T> {
/**
* 根据不同的 itemtype 获取不同类型的布局文件
* @param itemType
* @return
*/
int getLayoutId(int itemType);

/**
* 根据不同 position 的 bean 生成不同的的 item 布局
* @param position
* @param t 多种不同 item 传入的 bean 数据
* @return
*/
int getItemViewType(int position,T t);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息