【问题标题】:How to create custom Adapter with for 3 recycleViews如何使用 3 个 recycleViews 创建自定义适配器
【发布时间】:2020-12-12 18:41:31
【问题描述】:

大家好, 我想问我是否可以向我的 3 个回收视图添加每个回收视图 hase 界面以优化我的代码我尝试为 3 个回收视图仅添加 1 个适配器,您可以在下面看到我的代码,但我发现我自己被这个卡住了适配器,任何 1 知道如何添加自定义适配器以适应 3 回收视图?谢谢。

class CustomAdapter(private val contexte: Context) : RecyclerView.Adapter() { 私有 val 上下文:上下文 = 上下文

inner class FolderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

}

inner class PagesViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

}

inner class CorpusViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

}


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    if (viewType == VIEW_TYPE_CORPUS)
        return CorpusViewHolder(
            LayoutInflater.from(parent.context)
                .inflate(R.layout.corpus_item_layout, parent, false)
        )
    if (viewType == VIEW_TYPE_FOLDER)
        return FolderViewHolder(
            LayoutInflater.from(parent.context)
                .inflate(R.layout.folder_item_layout, parent, false)
        )
    return PagesViewHolder(
        LayoutInflater.from(parent.context).inflate(
            R.layout.page_item_layout, parent, false
        )
    )
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    TODO("Not yet implemented")
}

override fun getItemCount(): Int {
    return 20
}


companion object {
    internal val VIEW_TYPE_CORPUS = 1
    internal val VIEW_TYPE_FOLDER = 2
    internal val VIEW_TYPE_PAGES = 2
}

【问题讨论】:

    标签: kotlin adapter


    【解决方案1】:

    我建议您使用带有布局 id 的基类并用它初始化您的通用适配器,而不是这样做。

    open class AdapterItem(val layoutId: Int)
    data class Corpus(val id: Int): AdapterItem(id)
    

    然后像这样初始化你的适配器 CustomAdapter<AdapterItem>(...)

    在您的适配器中,覆盖 getView

    @Override
    fun getView(position: Int, convertView: View, parent: ViewGroup): View {
         val item = list[position]
         return if(converView != null){
              convertView
         } else {
              LayoutInflater.from(parent.context).inflate(item.layoutId, parent, false)
         }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多