Я использую Picasso для загрузки массива изображений из базы данных Firebase в пейджер просмотра, - PullRequest
0 голосов
/ 02 марта 2020

вот мой слайдер pageradapter

class SliderPageAdapter(var ctx: Context, private val images: List<Items>)

: PagerAdapter() {





private lateinit var itemRef: DatabaseReference
var img: Array<String>? = null






override fun instantiateItem(container: ViewGroup, position: Int): Any {
    val image = images[position]




    val inflater : LayoutInflater = ctx.
        getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater

    val slideLayout: View = inflater.inflate(R.layout.slider_row, container, false)
     val slideImg: ImageView = slideLayout.findViewById(R.id.slider)




        Picasso.get().load(image.getimagee()[position]).into(slideImg)



    container.addView(slideLayout)


    return slideLayout

}

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

}

override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {

   container.removeView(`object` as View?)
}

override fun getCount(): Int {



        return images.size


}


// here is my activity 


class ShowItemActivity : AppCompatActivity() {
var mtoolBar: Toolbar? = null
var itemImage: ImageView? = null
var priceTV: TextView? = null
var titleTV: TextView? = null
var chatBtn: Button? = null

приватный var sliderPageAdapter: SliderPageAdapter? = null

var  descriptionTV: TextView? = null
var categoryTV: TextView? = null
var subcategoryTV: TextView? = null
var itemId: String = ""
var title: String = ""
var state: TextView? = null
var lga: TextView? = null
private lateinit var mPager: ViewPager
private var imagesArray : MutableList<Items>? = null



override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_show_item)
    imagesArray = ArrayList()


    sliderPageAdapter = SliderPageAdapter(this, imagesArray as ArrayList<Items>)
    mPager = findViewById(R.id.item_show_image)
    mPager.setPadding(10,0,10,0)
    mPager.adapter = sliderPageAdapter


    itemId = intent.getStringExtra("itemId")!!
    title = intent.getStringExtra("title")!!
    mtoolBar = findViewById(R.id.show_items_toolbar)
    setSupportActionBar(mtoolBar)
    supportActionBar?.setDisplayHomeAsUpEnabled(true)
    supportActionBar?.setDisplayShowHomeEnabled(true)
    supportActionBar?.title = title


    priceTV = findViewById(R.id.price_show_item)
    titleTV = findViewById(R.id.title_show_item)
    chatBtn = findViewById(R.id.chat_show_item)
    state = findViewById(R.id.state_item)
    lga = findViewById(R.id.lga_item)

    descriptionTV = findViewById(R.id.expandable_text)
    categoryTV = findViewById(R.id.category_text)
    subcategoryTV = findViewById(R.id.subcategory_text)

    getItemDetails(itemId)


}



private fun getItemDetails(itemId: String?) {

    var itemsRef: DatabaseReference = FirebaseDatabase.getInstance().reference.child("Items")


    itemsRef.child(itemId!!).addValueEventListener(object : ValueEventListener{
        override fun onDataChange(p0: DataSnapshot) {


            if (p0.exists()) {

                for (snapshot in p0.children) {
                    val items = p0.getValue(Items::class.java)
                    (imagesArray as ArrayList<Items>).add(items!!)

                    priceTV!!.text = items!!.getpricee()
                    titleTV!!.text = items.gettitlee()
                    descriptionTV!!.text = items.getdescriptionn()
                    categoryTV!!.text = items.getcategoryy()
                    subcategoryTV!!.text = items.getsubcategoryy()
                    state!!.text = items.getstatee()
                    lga!!.text = items.getlgaa()


                        /*if (items.getimagee().isEmpty()) {
                            itemImage!!.setImageResource(R.drawable.ic_insert_photo_black_24dp)
                        } else {

                            Picasso.get()
                                .load(items.getimagee()[i])
                                .into(itemImage)

                        }*/


                }
                sliderPageAdapter?.notifyDataSetChanged()


            }
        }

        override fun onCancelled(p0: DatabaseError) {

        }
    })



}

}

Буду признателен за любую помощь .. Ошибка на Picasso..но я не знаю, как ее исправить

Я использую Picasso для загрузки массива изображений из базы данных Firebase в пейджер представления, после скольжения к последнему изображению происходит сбой приложения, и я получаю сообщение об ошибке, которое говорит: java .lang.IndexOutOfBoundsException: Index: 5, Size: 5

...