@ArturPendragonOfficial

Как с помощью Coroutines в RecyclerView раз в 2-ве секунды добавлять новый элемент на случайную позицию?

Работает все так : ViewModel - отдает через LiveData список MainActivity - отдает список через метод setElem() Adapter - определяет нажатую позицию для удаления и через колБэк отдает инфу о позиции MainActivity - отдает инфу ViewModel - удаляет элемент из списка

Адаптер для РисайклаВью

ItemAdapter(
    var context: Context,var recyclerViewClickInterface: RecyclerViewClickInterface
)


override fun onBindViewHolder(holder: ItemHolder, position: Int) {

        var positionOfNumber:NumberModel = myArrayElement!!.get(position)
        holder.textOfNumber.text = positionOfNumber.numberOfElement
        holder.button.setOnClickListener {
           var positionForDelete = holder.adapterPosition
            recyclerViewClickInterface.onClick(positionForDelete)

       }
    }


ViewModel

class MainActivityViewModel : ViewModel() {

     var localElements = MutableLiveData<MutableList<NumberModel>>()

    init {
        localElements.value = setElements()
    }

    fun onElementClicked(index: Int) {
        val copyOfArrayList:MutableList<NumberModel> = localElements.value!!
        copyOfArrayList.removeAt(index)
        localElements.value = copyOfArrayList
    }
    
    fun setElements() : MutableList<NumberModel> {
        val itemArrayList:MutableList<NumberModel> = ArrayList()
        itemArrayList.add(NumberModel("1"))
        itemArrayList.add(NumberModel("2"))
        itemArrayList.add(NumberModel("3"))
        itemArrayList.add(NumberModel("4"))
        itemArrayList.add(NumberModel("5"))
        return itemArrayList
    }
    
}


MainActivity

class MainActivity () : AppCompatActivity(), RecyclerViewClickInterface {
    private var recyclerView:RecyclerView? = null
    private var model: MainActivityViewModel? = null
    private var gridLayoutManager:GridLayoutManager? = null
    private var adapter:ItemAdapter? = null
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        model= ViewModelProvider(this).get(MainActivityViewModel::class.java)
        
        recyclerView = findViewById(R.id.recyclerViewList)
        gridLayoutManager = GridLayoutManager(applicationContext,2,LinearLayoutManager.VERTICAL,false)
        recyclerView?.layoutManager = gridLayoutManager
        adapter = ItemAdapter(this,this)
        recyclerView?.setHasFixedSize(true)
        
        model!!.localElements.observe(this,{
            adapter!!.setElem(it)
        })
        
        adapter?.notifyDataSetChanged()
        recyclerView?.adapter = adapter
    }

    override fun onClick(position: Int) {
        model!!.onElementClicked(position)
    }
}


Я не знаю куда вставить Корутину здесь...
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы