【发布时间】:2020-03-16 23:37:00
【问题描述】:
我尝试点击 Spinner 项目,当我点击 1 Kg 时它崩溃并给出错误提示
块引用 java.lang.IndexOutOfBoundsException:索引:2,大小:2
这是我的 Spinner 和 It listner 的代码:-
这是我的静态数组:-
val values = arrayOf(
"250 gm",
"500 gm",
"1 Kg",
"2 Kg",
"3 Kg",
"4 Kg", "5 Kg", "6 Kg", "7 Kg"
)
设置 ArrayAdapter :-
ArrayAdapter(
context,
android.R.layout.simple_spinner_item,
values
).also {
it.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
holder.product_spinner_kg.adapter = it
}
这是这个微调器的Listner:-
holder.product_spinner_kg.onItemSelectedListener =
object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
}
override fun onItemSelected(
parent: AdapterView<*>?, view: View?, position: Int, id: Long
) {
selectedQty = values[position]
if (position == 0) {
holder.product_price.text =
"Rs. " + (items[position].price.toDouble() * 0.25)
} else if (position == 1) {
holder.product_price.text =
"Rs. " + (items[position].price.toDouble() * 0.50)
} else if (position == 2) {
holder.product_price.text =
"Rs. " + (items[position].price.toDouble() * 1.00)
} else if (position == 3) {
holder.product_price.text =
"Rs. " + (items[position].price.toDouble() * 2.00)
} else if (position == 4) {
holder.product_price.text =
"Rs. " + (items[position].price.toDouble() * 3.00)
}
}
}
我的例外是:-
java.lang.IndexOutOfBoundsException:索引:2,大小:2 在 java.util.ArrayList.get(ArrayList.java:437) 在 com.maruti.marutisabji.adapter.user.ProductAdapter$onBindViewHolder$3.onItemSelected(ProductAdapter.kt:107) 在 android.widget.AdapterView.fireOnSelected(AdapterView.java:944) 在 android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:933) 在 android.widget.AdapterView.access$300(AdapterView.java:53) 在 android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:898) 在 android.os.Handler.handleCallback(Handler.java:873) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:201) 在 android.app.ActivityThread.main(ActivityThread.java:6820) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:922)
这是我的代码链接请检查:- https://gist.github.com/maulikdadhaniya/c0e16a9a13d03e9b7abe2235a35e7324
【问题讨论】:
-
items数组包含什么? -
@TejasPandya 项目包含
private var items: ArrayList<ProductListModel>, -
它是否包含任何数据?你在哪里填的?
-
是的,它有 Product Name 、 Price 、 Brand 的数据,并且我在 ProductActivity 中填充了 API 调用,它具有 productAdapter 的产品列表。我的问题代码来自适配器代码@TejasPandya
-
当我点击 250 gm 和 500 gm 应用程序没有崩溃,但是当我点击 1 Kg 应用程序崩溃时
标签: android kotlin spinner indexoutofboundsexception