Адаптер ViewPager показывает неправильное изображение - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть вид переработчика с изображениями.Когда я выбираю изображение, открывается слайдер изображений в пейджер.Но оно всегда показывает первое изображение, хотя я нажимаю на другое.

Я пытался отправить позицию в панели восстановления в instantiateItem () в ImageSliderAdapter imageView.setImageResource(imageModelArrayList[position]), но он создал IndexOutOfBoundException.

Вот мой код ImageSliderAdapter

    PagerAdapter() {
    private val inflater: LayoutInflater = LayoutInflater.from(context)


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

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

    override fun instantiateItem(container: ViewGroup, position: Int): Any {
        val imageLayout = inflater.inflate(R.layout.sliding_image, container, false)!!


        val imageView = imageLayout
            .findViewById(R.id.imageDetail) as ImageView

        imageView.setImageResource(imageModelArrayList[position])


        container.addView(imageLayout, 0)

        return imageLayout
    }


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

    override fun saveState(): Parcelable? {
        return null
    }
} 

Вотинициализация адаптера

private fun initSliderAdapter() {

        mPager = findViewById(R.id.pager)
        mPager!!.adapter =
            ImageSliderAdapter(this@ImageDetailActivity, imageModelArrayList!!)

        val indicator = findViewById<CirclePageIndicator>(R.id.indicator)

        indicator.setViewPager(mPager)

        val density = resources.displayMetrics.density

        //Set circle indicator radius
        indicator.radius = 5 * density

        NUM_PAGES = imageModelArrayList!!.size


             indicator.setOnPageChangeListener(object : ViewPager.OnPageChangeListener {

            override fun onPageSelected(position: Int) {
                currentPage = position

            }
            override fun onPageScrolled(pos: Int, arg1: Float, arg2: Int) {

            }
            override fun onPageScrollStateChanged(pos: Int) {

            }
        })
    }
 companion object  {

        private var mPager: ViewPager? = null
        private var currentPage = 0
        private var NUM_PAGES = 0 }

1 Ответ

0 голосов
/ 29 сентября 2019

Вам нужно позвонить setCurrentItem.Это позволит прокрутить пейджер до нужного элемента.

...