Index Outside Spinner

There are 4 spinners:
resiko, untung1, untung2, untung3

The user first selects resiko and the application will show which one will be Spinner(untung1 / untung2 / untung3)

An attempt to make dynamic Spinner data when you click an element inside the first Spinner, the rest will be absent, and the desired one will be visible, still working. The problem is that when I select tinggi from Spinner resiko, it gets an error:java.lang.IndexOutOfBoundsException

I also tried reading other posts, but still don't know what to do. I tried to use it getSelectedItem()before, but when I want to take the necessary data from the visible Spinner that is selected by the user, the application did not select the selected element itself, instead, it selected the first data in the visible Spinner.
(let's say there are 2 values ​​in Spinner, A and B, the user selects B, but the program selects A)

in the example: the
user selects "rendah" in the "Resiko" Spinner, and then the next visible Spinner is untung2, then the user selects "sedang" in this Spinner, but the program selects "-pilih--" instead of "sedang"
So I switched togetItemAtPosition(position).toString();

strings.xml

<string-array name="spinner_resiko_string">
    <item>--Pilih--</item>
    <item>Sangat Rendah</item>
    <item>Rendah</item>
    <item>Sedang</item>
    <item>Tinggi</item>
</string-array>

<string-array name="spinner_return_string">
    <item>--Pilih--</item>
    <item>Rendah</item>
</string-array>

<string-array name="spinner_return_string2">
    <item>--Pilih--</item>
    <item>Rendah</item>
    <item>Sedang</item>
</string-array>

<string-array name="spinner_return_string3">
    <item>--Pilih--</item>
    <item>Rendah</item>
    <item>Sedang</item>
    <item>Tinggi</item>
</string-array>

Spinner ad:

    final Spinner resiko = (Spinner) mScrollView.findViewById(R.id.spinner_resiko);
    final Spinner untung1 = (Spinner) mScrollView.findViewById(R.id.spinner_return1);
    final Spinner untung2 = (Spinner) mScrollView.findViewById(R.id.spinner_return2);
    final Spinner untung3 = (Spinner) mScrollView.findViewById(R.id.spinner_return3);

spinner in xml:

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner_return1"
    android:entries="@array/spinner_return_string"
    android:layout_marginLeft="10dp"/>
<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner_return2"
    android:entries="@array/spinner_return_string2"
    android:layout_marginLeft="10dp"/>
<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner_return3"
    android:entries="@array/spinner_return_string3"
    android:layout_marginLeft="10dp"/>

1 ( , tinggi resiko spinner) [using getItematPosition]:

 resiko.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> mRelative, View selectedItemView, int position, long id) {
            String resikox = mRelative.getItemAtPosition(position).toString();
            if (resikox.equals("Sangat Rendah")) {
                untung1.setVisibility(View.VISIBLE);
                untung2.setVisibility(View.GONE);
                untung3.setVisibility(View.GONE);
                untungx = untung1.getItemAtPosition(position).toString();
            }
            else if (resikox.equals("Rendah")){
                untung1.setVisibility(View.GONE);
                untung2.setVisibility(View.VISIBLE);
                untung3.setVisibility(View.GONE);
                untungx = untung2.getItemAtPosition(position).toString();
            }
            else if (resikox.equals("Sedang") || (resikox.equals("Tinggi"))) {
                untung1.setVisibility(View.GONE);
                untung2.setVisibility(View.GONE);
                untung3.setVisibility(View.VISIBLE);
                untungx = untung3.getItemAtPosition(position).toString();
            } else {
                untung1.setVisibility(View.GONE);
                untung2.setVisibility(View.GONE);
                untung3.setVisibility(View.GONE);
            }
        }
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            // Another interface callback
        }
    });

2 ( getItemSelected)

 //set spinner
    resiko.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> mRelative, View selectedItemView, int position, long id) {
            String resikox = mRelative.getItemAtPosition(position).toString();
            if (resikox.equals("Sangat Rendah")) {
                untung1.setVisibility(View.VISIBLE);
                untung2.setVisibility(View.GONE);
                untung3.setVisibility(View.GONE);
                untungx = untung1.getSelectedItem().toString();
            }
            else if (resikox.equals("Rendah")){
                untung1.setVisibility(View.GONE);
                untung2.setVisibility(View.VISIBLE);
                untung3.setVisibility(View.GONE);
                untungx = untung2.getSelectedItem().toString();
            }
            else if (resikox.equals("Sedang") || (resikox.equals("Tinggi"))) {
                untung1.setVisibility(View.GONE);
                untung2.setVisibility(View.GONE);
                untung3.setVisibility(View.VISIBLE);
                untungx = untung3.getSelectedItem().toString();
            } else {
                untung1.setVisibility(View.GONE);
                untung2.setVisibility(View.GONE);
                untung3.setVisibility(View.GONE);
            }
        }
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            // Another interface callback
        }
    });

logcat:

12-23 19:37:23.221  30433-30433/com.example.fabio.tabdrawer E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.fabio.tabdrawer, PID: 30433
java.lang.IndexOutOfBoundsException: Invalid index 3, size is 3
        at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
        at java.util.Arrays$ArrayList.get(Arrays.java:66)
        at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:337)
        at android.widget.AdapterView.getItemAtPosition(AdapterView.java:831)
        at com.example.fabio.tabdrawer.Menu_PIAF$1.onItemSelected(Menu_PIAF.java:183)
        at android.widget.AdapterView.fireOnSelected(AdapterView.java:964)
        at android.widget.AdapterView.access$200(AdapterView.java:49)
        at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:928)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:146)
        at android.app.ActivityThread.main(ActivityThread.java:5487)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
        at dalvik.system.NativeStart.main(Native Method)
+4
2

<item>--Pilih--</item> , . , , , Tinggi, .

, : Android Spinner " "

, , , onItemSelectedListeners . resiko,untung1,untung2,untung3, .

, , , .

, , , .

: , , :

turnBackgroundYellow()

.

.

, .

, .

String resikox_;
String untung1_; // and the others

// Create an ArrayAdapter using the string array and a default spinner layout
// Create a separate one for each spinner resiko,untung1,untung2,untung3
ArrayAdapter<CharSequence> adapter = ArrayAdapter
            .createFromResource(getActivity(), R.array.dataobjects_array,
                    android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(
            android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
resiko.setAdapter(adapter);
// Create a separate one for each spinner resiko,untung1,untung2,untung3
resiko.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        resikox_ = parent.getItemAtPosition(position).toString();
        SelectedItemMethod(resikox_)
    }
    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        //DO WHATEVER OR NOTHING
                }
});

// Class method to do your item selection stuff.
public void SelectedItemMethod(String item){

    if (item.equals("Sangat Rendah")) {
        untung1.setVisibility(View.VISIBLE);
        untung2.setVisibility(View.GONE);
        untung3.setVisibility(View.GONE);
    }
    //etc, etc for all your spinners or break it up, as you please
+3

setOnItemSelectedListener()

+1

Source: https://habr.com/ru/post/1621452/


All Articles