Работает все так :
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)
}
}
Я не знаю куда вставить Корутину здесь...