Android ListView通用单个多个布局

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’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值