Пейджер-адаптер не показывает данные при первом вызове - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть PagerAdapter, который по какой-то причине не показывает данные при первом создании!Отображается только при втором создании.

Это PagerAdapter:

class ViewPagerAdapter() : PagerAdapter() {
lateinit var context: Context
lateinit var data: Data

constructor(context: Context?, data: Data) : this() {
    this.context = context!!
    this.data = data
}

override fun getCount(): Int {
    return data.myArray.size
}

override fun isViewFromObject(view: View, `object`: Any): Boolean {
    return view == `object`
}

override fun instantiateItem(container: ViewGroup, position: Int): Any {

    val binding = DataItemBinding.inflate(LayoutInflater.from(context), container, false)
    binding.data = data
    binding.executePendingBindings()
    container.addView(binding.root)
    return binding.root
}

override fun getItemPosition(`object`: Any): Int {
    return PagerAdapter.POSITION_NONE
}

override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
    container.removeView(`object` as ConstraintLayout)
}}

Это вызов адаптера в действии:

   override fun onStart() {
    super.onStart()
    val viewPagerAdapter = ViewPagerAdapter(this, data)
    viewPager.adapter = viewPagerAdapter
    viewPager.currentItem = data.myArray.lastIndex
    indicator.setViewPager(viewPager)

}

1 Ответ

0 голосов
/ 15 ноября 2018

Я думаю, что ваш isViewFromObject метод вызывает эту проблему.Вы должны overide это как ниже:

@Override
public boolean isViewFromObject(View view, Object object) {
    return ((Fragment)object).getView() == view;
}
...