简体   繁体   English

Android jetpack paging3 更新项目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM