【问题标题】:FastAdapter Combine Headers and itemsFastAdapter 组合标题和项目
【发布时间】:2021-02-03 19:12:32
【问题描述】:

我使用 mikepenz 的库 fastadapter https://github.com/mikepenz/FastAdapter

需要结合不同的观点

Header 1
Item A
Item B
Item C
Hader 2
Item D
Item E
....

项目类别

open class SimpleItemVB : AbstractBindingItem<DrawSimpleItemListBinding>() {
    var name: String? = null

    override val type: Int
        get() = R.id.fastadapter_icon_item_id

    override fun bindView(binding: DrawSimpleItemListBinding, payloads: List<Any>) {
        binding.tvTitle.text = name
    }

    override fun createBinding(
        inflater: LayoutInflater,
        parent: ViewGroup?
    ): DrawSimpleItemListBinding {
        return DrawSimpleItemListBinding.inflate(inflater, parent, false)
    }
}

显示标题类

open class HeaderVB(
        val title: String? = null
) : AbstractBindingItem<DrawHeaderItemListBinding>() {


    override val type: Int
        get() = R.id.fastadapter_header_item_id

    override fun bindView(binding: DrawHeaderItemListBinding, payloads: List<Any>) {
        binding.tvTitle.text = title
    }

    override fun createBinding(
            inflater: LayoutInflater,
            parent: ViewGroup?
    ): DrawHeaderItemListBinding {
        return DrawHeaderItemListBinding.inflate(inflater, parent, false)
    }
}

用于生成物品

    private fun fetchItems(): ArrayList<SimpleItemVB> {
        val items = ArrayList<SimpleItemVB>()

        //How to add header???
        for (i in 1..100) {
            
            //How to add header every 3 items???
            val simpleItem = SimpleItemVB()
            simpleItem.name = "Test $i"
            simpleItem.identifier = (100 + i).toLong()
            items.add(simpleItem)
        }
        return items
    }

我不知道如何组装适配器以使其具有两种不同类型的视图。

一个简单的例子?因为存储库中的内容太复杂而无法理解

【问题讨论】:

    标签: android kotlin fastadapter


    【解决方案1】:

    FastAdapter 库围绕提供类型安全接口的概念构建,以便为您的RecyclerView 构造适配器。这种类型安全性也深深嵌套在其 API 中(例如通过 Generic 类型规范),以确保不会发生类型冲突。

    通常,列表中只有相同的类型,或者共享相同父类型的项目。如果项目足够不同,它们仍将始终共享 IItem&lt;RecyclerView.ViewHolder 类型。

    该库为这些场景公开了一个类型别名,以允许将您的适配器定义为GenericFastAdapter,并且与此类似,还公开了GenericItemAdapterGenericModelAdapter,具体取决于您的用例。

    除此之外,该库还提供了GenericFastItemAdapter(结合FastAdapterItemAdapter

    FastAdapter 的示例应用程序包含一个展示此类用法的示例:

    https://github.com/mikepenz/FastAdapter/blob/develop/app/src/main/java/com/mikepenz/fastadapter/app/IconGridActivity.kt

    类似的还有另一个例子展示了一个类似的用例,不同的模型在这里映射到它们各自的项目:

    https://github.com/mikepenz/FastAdapter/blob/develop/app/src/main/java/com/mikepenz/fastadapter/app/MultiTypeModelItemActivity.kt

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 2021-10-23
      • 2011-09-19
      • 2019-06-11
      • 2011-05-20
      • 2015-11-14
      相关资源
      最近更新 更多