Android recyclerview - вызов метода / функции из второго адаптера (Kotlin) - PullRequest
0 голосов
/ 24 февраля 2019

Я использую два адаптера для одного и того же списка, но каждый отсортирован по-разному.

Это 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)
}

1 Ответ

0 голосов
/ 24 февраля 2019

Я думаю, что вы неохотно создаете новую MainActivity (в добавленном коде вы вызываете его конструктор).Также было бы полезно, если бы вы опубликовали код MainActivity

...