gpt4 book ai didi

android - 如何获取 recyclerView getItemCount - 位置从 2 而不是 0 开始

转载 作者:行者123 更新时间:2023-11-30 05:08:29 27 4
gpt4 key购买 nike

我正在尝试将我的 recyclerview 连接到两个不同的 mutableArray 和一个 textView。

它工作正常而不是覆盖 fun getItemCount() 从位置 0 而不是 2 开始。所有数据都来自 firestore 并在 MainActivity 类中调用

在位置 0 我有自己的 newList 适配器并且它工作正常,在位置 1 我有 textview 并且它工作正常。在位置 2,我想开始这个 flowerList,但出于某种原因,它错过了我的 flowerList 中的第 2 个项目。

所以我的问题是如何让我的

override fun getItemCount(): Int {
return flowerList.size
}

从位置 2 而不是位置 0 开始

这是该适配器的完整代码:

class MainAdapter(val flowerList: MutableList<Flowers>, val newsList: MutableList<News>, val context: Context) : RecyclerView.Adapter<MainAdapter.ViewHolder>() {

private val TYPE_NEWS_LAYOUT = 0
private val TYPE_TITLE_LAYOUT = 1
private val TYPE_FLOWERS_LAYOUT = 2

override fun onCreateViewHolder(parent: ViewGroup, position: Int): ViewHolder {
if (position == TYPE_NEWS_LAYOUT) {
val newsFeed = LayoutInflater.from(parent.context).inflate(R.layout.main_horizontal_recycler, parent, false)
return ViewHolder(newsFeed)

} else if (position == TYPE_TITLE_LAYOUT) {
val textView = LayoutInflater.from(parent.context).inflate(R.layout.item_main_text_recycler, parent, false)
return ViewHolder(textView)

} else {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_main_bottom_recycler, parent, false)
return ViewHolder(view)
}
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
if (position == 0) {
holder.itemView.main_top_recycler_horizontal.layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
holder.itemView.main_top_recycler_horizontal.adapter = MainHorizontalAdapter(newsList)
} else if (position == 1) {
holder.middleTitle.text = "Text here"
} else {
val flower = flowerList[position]
holder.flowerName.text = flower.flowername
Glide.with(context).load(flower.mainimageurl).into(holder.flowerImage)
}
}

override fun getItemViewType(position: Int): Int {
if (position == 0) {
return TYPE_NEWS_LAYOUT
} else if (position == 1)
return TYPE_TITLE_LAYOUT
else
return TYPE_FLOWERS_LAYOUT
}

override fun getItemCount(): Int {
return flowerList.size
}

class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val flowerName = view.flower_name
val flowerImage = view.flower_image
val middleTitle = view.main_recycler_title
}
}

最佳答案

递增计数器会成为一个问题,因为每次 View 被回收时都会调用 onBindViewHolder。相反,我认为您想更改行

来自:val flower = flowerList[位置]

收件人:val flower = flowerList[position - 2]//减去两个,以考虑适配器中的前两个位置,即您的新闻和标题 View

关于android - 如何获取 recyclerView getItemCount - 位置从 2 而不是 0 开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54115471/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com