eprendre / ItemDelegate

"Favor composition over inheritance" for RecyclerView Adapter by Hannes Dorfmann

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于

翻译版:逃离 adapter 的地狱—针对多个 View type 的组合实现方案

原版:JOE'S GREAT ADAPTER HELL ESCAPE

ItemDelegate 是一个从 AdapterDelegates fork 出来的项目,对于 AdapterDelegates 来说改动不大,但是**上的理解和 sockeqwe 有些不同。 我认为 ItemDelegate 是一种 Item 的代理,他将处理所有 Item 的事情,比如 onCreateViewHolder()onBindViewHolder()getItemId() 甚至 getSpan(),所以我一些名字改了,并且把包名改了,以免和 AdapterDelegates 冲突。

具体改动

  1. ItemDelegate 增加了 getItemId(),这算是原作者 sockeqwe 忽略的一个方法,主要配合 setHasStableIds(boolean hasStableIds) 使用。
  2. ItemDelegate 增加了 getSpanSize() 方法,主要配合 GridLayoutManager 使用,实现更为复杂的布局。

以上就是目前最为核心的改动,其他都是一些细节,如方法名,参数名。

如何依赖

  1. 增加 jitPack 到你的 repositories

    allprojects {
      repositories {
        ...
        maven { url 'https://jitpack.io' }
      }
    }
  2. 添加依赖关系

    dependencies {
      compile 'com.github.YeungKC:ItemDelegate:4.4.0'
    }

基本使用

请查看 Demo

感谢

sockeqwe 和他的 AdapterDelegates

About

"Favor composition over inheritance" for RecyclerView Adapter by Hannes Dorfmann

License:Apache License 2.0


Languages

Language:Java 99.0%Language:Shell 1.0%