V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
twoyuan
V2EX  ›  Android

弱弱推荐一发昨天写的一个小轮子:通用 ListView/RecyclerView 适配器

  •  
  •   twoyuan · 2016-01-21 11:42:28 +08:00 · 7941 次点击
    这是一个创建于 3219 天前的主题,其中的信息可能已经有所发展或是发生改变。

    偶然看到 Ribot 的 Easy Adapter 中使用继承和注解 ViewHolder 的方式来实现通用适配器,感觉很方便。

    在参( chao )考( xi )这个项目的基础上扩展了通过回调 holder 给 item 设置各种 listener 的方法,感觉自己用着还行,特来斗胆推荐一发,求指点 /pr/star > <

    用法和 Easy Adapter 相同,继承 CommonHolder 然后注解 LayoutId 和 ViewId 并实现 bindData(T t) 方法。例如:

    @LayoutId(R.layout.item_person)
    public class PersonHolder extends CommonHolder<Person> {
        @ViewId(R.id.name) TextView name;
        @ViewId(R.id.email) TextView email;
        public PersonHolder(View itemView) {
            super(itemView);
        }
        @Override public void bindData(Person person) {
            name.setText(person.name);
            email.setText(person.email);
        }
    }
    

    然后直接 set 给 ListView / RecyclerView 就好了

    SimpleListAdapter<Person, PersonHolder> listAdapter = new SimpleListAdapter<>(this, PersonHolder.class);
    mListView.setAdapter(listAdapter);
    

    设置监听器不用像 EasyAdapter 一样写死在 ViewHolder 中了,可以直接调用 adapter 设置:

    recyclerAdapter.setOnBindListener((position, person, holder) -> {
        // holder 用于直接对 view 配置监听器
        holder.name.setOnClickListener((v) -> toast(person.name));
        holder.email.setOnClickListener((v) -> toast(person.email));
    });
    

    项目地址: https://github.com/twiceyuan/CommonAdapter

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5840 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:11 · PVG 14:11 · LAX 22:11 · JFK 01:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.