【问题标题】:ViewPager2 don't recreate ui after swippedViewPager2 刷卡后不重新创建 ui
【发布时间】:2021-10-27 16:52:03
【问题描述】:

单击按钮后,我正在使用 viewpager2 并在适配器类中更改按钮颜色。但是在没有单击按钮的情况下滑动 7-8 次后,按钮颜色会发生变化,因此 viewpager 不会重新创建 ui。这是我的适配器类:

class MyAdapter(private val mData :List<String>) : RecyclerView.Adapter<MyAdapter.MyViewHolder>() {
inner  class MyViewHolder(private val binding:ItemDataBinding) :RecyclerView.ViewHolder(binding.root) {
    fun bind(data :String) {
        binding.mText.text = data
        binding.btnclick.setOnClickListener {
            binding.btnclick.setBackgroundColor(ContextCompat.getColor(context,R.color.blue))
        }
    }
}

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
    (holder as MyViewHolder).bind(mData[position])
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
    val binding = ItemDataBinding.inflate(LayoutInflater.from(parent.context),parent,false)
    return MyViewHolder(binding)
}

override fun getItemCount(): Int {
    return mData.size
}

}

在主要活动中,这是我声明 View pager 的方式

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val data = listOf<String>("s","a","b","c","d","e","f","g","h","ı","i")
    val  viewpager = findViewById<ViewPager2>(R.id.mViewPager)
    val adapter = MyAdapter(data)
    viewpager.adapter = adapter

}

}

【问题讨论】:

    标签: android-studio kotlin android-recyclerview android-viewpager2


    【解决方案1】:

    尝试将setOffscreenPageLimit(int limit) 设置为0 并参考thisthat 以获取有关setOffscreenPageLimit 和缓存的更多信息

    viewpager.setOffscreenPageLimit( 0 ) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 2019-01-07
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多