Android ListView通用单个多个布局
在日常开发中,难免碰到ListView的多种布局Item的情况,这就是我的目的之一,可以更简单,更快速的适配。
基本上不需要新建适配器Adapter
注解的形式支持单种多种布局
Item类可以跟Context更方便的交互
单种Item使用
//注解,实体类跟Item类关联
@NormalH(holderName = ItemH.class)
public class ItemBean {
}
public class ItemH extends INormalHolder<ItemBean>{
public ItemH(Context ctx) {
super(ctx);
//在构造函数指明是那个布局
layout=R.layout.test_left_layout;
}
public void initView(View view) {
//重写此方法,主要是控件初始化
}
public void setData(ItemBean bean){
//数据操作
}
}
直接使用
BaseAdapter adapter = new NormalAdapter<>(list, this);
mListView.setAdapter(adapter);
多种Item使用
@ManyH(holders = {ItemsLeftH.class,ItemsRightH.class})
public class ItemsBean {
//注解类型字段
@TypeH
//哪一种布局 0:ItemsLeftH 1:ItemsRightH
//跟上边类的注解的顺序有关系
private int type;
}
//这是ItemsRightH的Item布局
public class ItemsRightH extends IManyHolder<ItemsBean>{
public ItemsLeftH(Context ctx) {
super(ctx);
//在构造函数指明是那个布局
layout=R.layout.test_left_layout;
}
public void initView(View view) {
//重写此方法,主要是控件初始化
}
public void setData(ItemBean bean){
//数据操作
}
}
//这是ItemsLeftH的Item布局
public class ItemsLeftH extends IManyHolder<ItemsBean>{
public ItemsLeftH(Context ctx) {
super(ctx);
//在构造函数指明是那个布局
layout=R.layout.test_left_layout;
}
public void initView(View view) {
//重写此方法,主要是控件初始化
}
public void setData(ItemBean bean){
//数据操作
}
}
BaseAdapter adapter = new ManyAdapter<>(list, this);
mListView.setAdapter(adapter);
Item类如何跟Context交互
Context只需要实现 IHolderAccept 接口即可,接受一个Obj参数
public interface IHolderAccept {
/**Context接收到obj对象后,各己所需,操作自己的obj对象*/
void acceptMessage(Object obj);
}
然后在Item类中调用。sendMessage(Object obj)
github地址
导入as项目:compile ‘com.yidont:fit:1.5.1’