0

I am working on android spinner and got stuck in a simple problem but tried much hard and unable to resolve it. spinner.setselection is not working. Here is the code. Here is the simple straight forward code for spinner set selection but is giving me Fatal error ArrayIndexOutOfBound exception.

package com.example.younastraders;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import com.toptoche.searchablespinnerlibrary.SearchableSpinner;

public class Test extends AppCompatActivity {
    SearchableSpinner edDealerID;
    Button btnAdd;
    ArrayAdapter<String> dealerAdapter;
    public String[] dealersName;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_add_return);
        dealersName = new String[5];
        dealersName[0] = "Dealer 1";
        dealersName[1] = "Dealer 2";
        dealersName[2] = "Dealer 3";
        dealersName[3] = "Dealer 4";
        dealersName[4] = "Dealer 5";
        btnAdd = findViewById(R.id.button_add);
        edDealerID = findViewById(R.id.ed_dealerName);

        dealerAdapter = new ArrayAdapter<>(Test.this, android.R.layout.simple_spinner_dropdown_item, dealersName);
        edDealerID.setAdapter(dealerAdapter);

        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edDealerID.setSelection(1);
            }
        });
    }
}

The Error which is occurring always is shown below.

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.younastraders, PID: 8996
    java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
        at java.util.Arrays$ArrayList.get(Arrays.java:3766)
        at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:397)
        at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:453)
        at android.widget.ArrayAdapter.getView(ArrayAdapter.java:419)
        at android.widget.Spinner.makeView(Spinner.java:724)
        at android.widget.Spinner.layout(Spinner.java:672)
        at android.widget.Spinner.onLayout(Spinner.java:634)
        at android.view.View.layout(View.java:21912)
        at android.view.ViewGroup.layout(ViewGroup.java:6260)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:21912)
        at android.view.ViewGroup.layout(ViewGroup.java:6260)
        at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1915)
        at android.view.View.layout(View.java:21912)
        at android.view.ViewGroup.layout(ViewGroup.java:6260)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:21912)
        at android.view.ViewGroup.layout(ViewGroup.java:6260)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:21912)
        at android.view.ViewGroup.layout(ViewGroup.java:6260)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:21912)
        at android.view.ViewGroup.layout(ViewGroup.java:6260)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:21912)
        at android.view.ViewGroup.layout(ViewGroup.java:6260)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at com.android.internal.policy.DecorView.onLayout(DecorView.java:779)
        at android.view.View.layout(View.java:21912)
        at android.view.ViewGroup.layout(ViewGroup.java:6260)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3080)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2590)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1721)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7598)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
        at android.view.Choreographer.doCallbacks(Choreographer.java:790)
        at android.view.Choreographer.doFrame(Choreographer.java:725)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:951)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Please someone helps me out. Thank you in advance.

saffi ullah
  • 47
  • 1
  • 6
  • I copied your code and it worked perfectly on my computer, are your sure the error is coming from here? I dont see any references to the file Test.java + to that line of code in the error log – sgtpotatoe Jun 10 '20 at 17:12
  • Yes i am 100% sure the error is coming from this. I have been stuck in the error since 2 days and unable to find any solution. I make this simple Test file and not using any other activity but still there is the error. – saffi ullah Jun 10 '20 at 17:52
  • When i clicked on Add Button where set selection is called it simply close the app by giving me the fatal exception. – saffi ullah Jun 10 '20 at 18:00

1 Answers1

0

Try this -> Exchange the place of second and third argument, like this :

dealerAdapter = new ArrayAdapter<>(Test.this,
                      dealersName, android.R.layout.simple_spinner_dropdown_item);
        edDealerID.setAdapter(dealerAdapter);

If above is not a problem, anyway add this line just after the above code here:

dealeradapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

This might help further: Android: setSelection having no effect on Spinner

Hope it helps.