【发布时间】:2021-01-14 12:32:01
【问题描述】:
此行错误adapter = ItemAdapter(applicationContext,userViewModel.getListUsers())
**因为适配器参数context:Context,arrayList:ArrayList(但不是MutableLiveData)**
我不知道该怎么办,我也不完全确定我是否正确使用了 LiveData。
我的适配器
class ItemAdapter(var context: Context, private var arrayList: ArrayList<NumberModel>):RecyclerView.Adapter<ItemAdapter.ItemHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder{
val itemHolder = LayoutInflater.from(parent.context).inflate(
R.layout.grid_layout_list_item,
parent,
false
)
return ItemHolder(itemHolder)
}
override fun onBindViewHolder(holder: ItemHolder, position: Int) {
var positionOfNumber:NumberModel = arrayList.get(position)
holder.textOfNumber.text = positionOfNumber.numberOfElement
holder.button.setOnClickListener {
var positionForDelete = holder.adapterPosition
arrayList.removeAt(positionForDelete)
notifyItemRemoved(positionForDelete)
notifyItemRangeChanged(positionForDelete,arrayList.size)
}
}
override fun getItemCount(): Int {
return arrayList.size
}
class ItemHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var textOfNumber = itemView.findViewById<TextView>(R.id.numberTextView)
var button:Button = itemView.findViewById(R.id.buttonClick)
}
}
MainActivity
recyclerView = findViewById(R.id.recyclerViewList)
gridLayoutManager = GridLayoutManager(applicationContext,2,LinearLayoutManager.VERTICAL,false)
recyclerView?.layoutManager = gridLayoutManager
recyclerView?.setHasFixedSize(true)
recyclerView?.adapter = adapter
userViewModel.getListUsers().observe(this, Observer {
it?.let {
adapter = ItemAdapter(applicationContext,userViewModel.getListUsers())
}
})
}
视图模型
class MainActivityViewModel : ViewModel() {
var elementsList: MutableLiveData<ArrayList<NumberModel>> = MutableLiveData()
init {
elementsList.value = setElements()
}
fun getListUsers() = elementsList
private fun setElements() : ArrayList<NumberModel> {
var itemArrayList:ArrayList<NumberModel> = ArrayList()
itemArrayList.add(NumberModel("1"))
itemArrayList.add(NumberModel("2"))
itemArrayList.add(NumberModel("3"))
itemArrayList.add(NumberModel("4"))
itemArrayList.add(NumberModel("5"))
itemArrayList.add(NumberModel("6"))
itemArrayList.add(NumberModel("7"))
itemArrayList.add(NumberModel("8"))
itemArrayList.add(NumberModel("9"))
itemArrayList.add(NumberModel("10"))
return itemArrayList
}
【问题讨论】:
标签: android kotlin android-recyclerview android-livedata