如何使用 for 3 recycleViews 创建自定义适配器
How to create custom Adapter with for 3 recycleViews
大家好,
我想问一下我是否可以添加到我的 3 个回收视图中,每个回收视图 hase 接口来优化我的代码适配器,任何 1 知道如何添加自定义适配器以适应 3 回收视图?谢谢.
class 自定义适配器(私有 val 上下文:上下文):
RecyclerView.Adapter() {
私有 val 上下文:Context = contexte
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
}
我建议您使用带有布局 ID 的基 class 并用它初始化您的通用适配器,而不是这样做。
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)
}
}
大家好, 我想问一下我是否可以添加到我的 3 个回收视图中,每个回收视图 hase 接口来优化我的代码适配器,任何 1 知道如何添加自定义适配器以适应 3 回收视图?谢谢.
class 自定义适配器(私有 val 上下文:上下文):
RecyclerView.Adapter
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
}
我建议您使用带有布局 ID 的基 class 并用它初始化您的通用适配器,而不是这样做。
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)
}
}