Android Recyclerview-第二个适配器(Kotlin)的调用方法 /函数



我在同一列表中使用两个适配器,但每个列表都有不同的分类。

这是adapterONE(我删除了这个问题的几乎所有不需要的一切):

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val video = videolist[position]
    holder.title.text = video.id.toString()
    holder.title.setOnClickListener {
        hide(video.id)
    }
}
override fun getItemCount() = videolist.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val view = LayoutInflater.from(parent.context).inflate(R.layout.videoview, parent, false)
    return ViewHolder(view)
}
class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView!!){
    val title = itemView!!.videoviewTitle!!
}

fun hide(id: Int){
    var ppp = 0
    for (i in 0 until videolist.size) {
        if(videolist[i].id == id){
            ppp = i
            break
        }
    }
    videolist.removeAt(ppp)
    notifyItemRemoved(ppp)
}

现在呼叫hide函数我希望在第二个适配器中删除同一项目,因此我尝试了:

videolist.removeAt(ppp)
notifyItemRemoved(ppp)
MainActivity().adapterTWO.hide(id) // this is what I added

并获取错误:

lateinit property adapterTWO has not been initialized

但这不是真的,因为adapterTWO已加载内容

请提供帮助,并提前感谢!

编辑:

这就是我在MainActivity中创建适配器的方式

lateinit var adapter: RecentAdapter
lateinit var adapterTrending: TrendingAdapter
fun loadVids(endvids: MutableList<Videos>){
    adapter = RecentAdapter(this@MainActivity, endvids, isfavorites)
    recyclerViewRecent.adapter = adapter
    recyclerViewRecent.layoutManager = LinearLayoutManager(this@MainActivity)
    recyclerViewRecent.setHasFixedSize(true)
}

fun loadVidsRecent(endvids: MutableList<Videos>){
    adapterTrending = TrendingAdapter(this@MainActivity, endvids, isfavorites)
    recyclerViewTrending.adapter = adapterTrending
    recyclerViewTrending.layoutManager = LinearLayoutManager(this@MainActivity)
    recyclerViewTrending.setHasFixedSize(true)
}

我认为您不愿创建新的MainActivity(在您称为其构造函数的添加代码中)。如果您发布了一些MainActivity代码

,也将有所帮助

最新更新