@Override
public long getItemId(int position) {
return position;
}
adapter.getItem(position).id;
/**
* 配合{@link QuickAdapter}使用, 传入{@link QuickAdapter}中的数据类型如果实现此接口,
* 则可以直接调用{@link QuickAdapter#getItemId(int)}来获取数据的id.
*/
public interface IdObject {
long getId();
}
@Override
public long getItemId(int position) {
T data = this.data.get(position);
return data instanceof IdObject ? ((IdObject) data).getId() : position;
}
final QuickMultiAdapter<Integer> adapter = new QuickMultiAdapter<>(this);
adapter.addItemViewDelegate(new LeftDelegate());
adapter.addItemViewDelegate(new RightDelegate());
listView.setAdapter(adapter);
adapter.replaceAll(getData());
class LeftDelegate implements ItemViewDelegate<Integer> {
@Override public int getItemViewLayoutId() {
return R.layout.i_text;
}
@Override public boolean isForViewType(Integer item, int position) {
return item % 2 == 0;
}
@Override public void convert(BaseAdapterHelper helper, Integer item, int position) {
helper.setText(R.id.text, item + "");
}
}
class RightDelegate implements ItemViewDelegate<Integer> {
@Override public int getItemViewLayoutId() {
return R.layout.i_text_right;
}
@Override public boolean isForViewType(Integer item, int position) {
return item % 2 != 0;
}
@Override public void convert(BaseAdapterHelper helper, Integer item, int position) {
helper.setText(R.id.text, item + "");
}
}
/**
* Adapter中多布局代理
* @param <T> 数据源类型
* @param <H> ViewHolder类型
*/
public interface BaseItemViewDelegate<T, H extends BaseAdapterHelper> {
/** 布局资源id **/
int getItemViewLayoutId();
/** 判断该position是否要加载此类型的布局 **/
boolean isForViewType(T item, int position);
/**
* 当需要条目将被展示到界面上时, 通过此方法适配界面
* @param helper ViewHolder
* @param item 数据
* @param position 位置
*/
void convert(H helper, T item, int position);
}