【问题标题】:Android jetpack paging3 update itemAndroid jetpack paging3 更新项
【发布时间】:2020-07-28 13:00:07
【问题描述】:

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

【问题讨论】:

    标签: android android-jetpack android-paging


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-04
      • 1970-01-01
      • 2022-10-08
      • 2022-01-01
      • 2022-10-06
      • 2022-08-22
      • 1970-01-01
      • 2020-11-16
      相关资源
      最近更新 更多