java.lang.IndexOutOfBoundsException:索引:2,大小:2在微调项选择中

问题描述 投票:0回答:2

[我尝试单击微调器项目,当我单击1 Kg时它崩溃并给出错误信息

Blockquote java.lang.IndexOutOfBoundsException:索引:2,大小:2

这是我的Spinner and 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
    }

这是此微调器的侦听器:-

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

android kotlin spinner indexoutofboundsexception
2个回答
0
投票

您的代码必须以else块结尾


0
投票

我建议在下面的代码块中避免这种IndexOutOfBound错误:

© www.soinside.com 2019 - 2024. All rights reserved.