安卓喷气背包分页3更新项目



我正在使用paging3来显示数据。当我想更新一些项目时,如何获取这些项目的位置?使用";notifyItemChanged";。(我知道这些项目的id,但没有api来获取适配器数据(

您可以设置点击监听器,点击操作后可以更改项目并更新视图

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))
}
}

在你的活动设置点击监听器功能

recyclerView.adapter = Adapter(getModels()) { item, pos, view -> 
recyclerViewClickListener(item, pos, view) 
}

然后更改您的项目并更新视图

private fun recyclerViewClickListener(item : CountryModel?, pos : Int, view : View) {
item.countryName = "new name"
adapter.notifyItemChanged(pos, item)
}

最新更新