[英]Android jetpack paging3 update item
I am using paging3 to display data.我正在使用 paging3 来显示数据。 When I want to update a few items, how do I get the position of these items?
当我想更新几个项目时,如何获取这些项目的position? use "notifyItemChanged".(I know the id of these items, but there is no api to get the adapter data)
使用“notifyItemChanged”。(我知道这些项目的id,但是没有api来获取适配器数据)
You can set click listener and after click action you can change item and update view您可以设置点击侦听器,点击操作后您可以更改项目和更新视图
class Adapter(val countryList: MutableList<CountryModel>,
clickFunc : ((CountryModel?, Int, View) -> Unit)? = null) : RecyclerView.Adapter<Adapter.ModelViewHolder>() {
class ModelViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val countryName: TextView = view.findViewById(R.id.countryName)
val capitalName: TextView = view.findViewById(R.id.capitalName)
val flagImage: ImageView = view.findViewById(R.id.flagImage)
fun bindItems(item: CountryModel) {
countryName.setText(item.countryName)
capitalName.setText(item.capitalName)
flagImage.setImageResource(item.flagImage)
view.setOnClickListener {
clickFunc?.invoke(item, adapterPosition, view)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ModelViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_card, parent, false)
return ModelViewHolder(view)
}
override fun getItemCount(): Int {
return countryList.size
}
override fun onBindViewHolder(holder: ModelViewHolder, position: Int) {
holder.bindItems(countryList.get(position))
}
}
In your activity set a click listener function在您的活动中设置一个点击侦听器 function
recyclerView.adapter = Adapter(getModels()) { item, pos, view ->
recyclerViewClickListener(item, pos, view)
}
Then change your item and update view然后更改您的项目并更新视图
private fun recyclerViewClickListener(item : CountryModel?, pos : Int, view : View) {
item.countryName = "new name"
adapter.notifyItemChanged(pos, item)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.