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

2016-01-21 11:42:28 +08:00
 twoyuan

偶然看到 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

4849 次点击
所在节点    Android
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/252312

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX