获取IndexOutOfBoundsException: Index: 1, Size: 1当试图从Firestore获



我正试图从我的Firestore数据库获取图像URL,以创建远程图像列表(SlideModel)并在图像滑块中显示它们。我得到以下错误和应用程序崩溃。我不知道我做错了什么。

误差

Process: com.abc.trad, PID: 2954
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.get(ArrayList.java:437)
at com.abc.trad.ui.fragments.DashboardFragment.successAdListImageURL(DashboardFragment.kt:625)
at com.abc.trad.firestore.FirestoreClass.getAdList$lambda-121(FirestoreClass.kt:1079)
at com.abc.trad.firestore.FirestoreClass.lambda$1fhZA5eTJEbDTBjX4GIWQgO1m6U(Unknown Source:0)
at com.abc.trad.firestore.-$$Lambda$FirestoreClass$1fhZA5eTJEbDTBjX4GIWQgO1m6U.onSuccess(Unknown Source:4)
at com.google.android.gms.tasks.zzn.run(com.google.android.gms:play-services-tasks@@17.2.0:4)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8633)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

下面是我必须从Firestore获取数据的代码。

fun getAdList(fragment: DashboardFragment) {
mFireStore.collection("ads")
.get()
.addOnSuccessListener { document ->
val adList: ArrayList<Ads> = ArrayList()
for (i in document.documents) {
val ad = i.toObject(Ads::class.java)
ad!!.ad_id = i.id
adList.add(ad)
}
fragment.successAdListImageURL(adList)
}.addOnFailureListener { e ->
}
}

下面是我试图在幻灯片中显示图像的方法。

fun successAdListImageURL(adImageURL: ArrayList<Ads>){
val remoteImages: ArrayList<SlideModel> = ArrayList()
val numOfImage=adImageURL.size
var i=1
while (i<=numOfImage){
remoteImages.add(SlideModel(adImageURL[i].image_url))
i+=1
}
binding.imageSlider.setImageList(remoteImages, ScaleTypes.CENTER_INSIDE)
binding.imageSlider.visibility=View.VISIBLE
}

您检查过numOfImage的值是多少吗?

实际上,在这里使用这样的循环不是很方便。在本例中,不需要索引本身,因此可以使用forEach循环。

代替你的while-loop,试试这个:

adImageURL.forEach{
remoteImages.add(SlideModel(it.image_url)
}

最新更新