Search code examples
androidandroid-spinner

Text Color Changes to White when select item from searchable spinner


I am using custom searchable spinner in my android application. In one of my activity, I am using two searchable spinners. one for Citys and one for area locations. On selection of 1st Spinner item, I am Changing the adapter of the 2nd spinner to show Area location of that respective City's. but when I select an item of the 2nd spinner, Text Color of the selected item of spinner changes to White. How to stop it.

I have Attached ScreenShots and Code below.

Before Selecting Any Item

Before Selecting Any Item

After Selecting Items Of Both Spinner

After Selecting Items Of Both Spinner

Activity.java

citySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            // Create an ArrayAdapter using the string array and a default spinner layout
            if(citySpinner.getItemAtPosition(i).equals("Mumbai"))
            {
                adapterArea = ArrayAdapter.createFromResource(getApplicationContext(),
                        R.array.mumbai, android.R.layout.simple_spinner_item);

                // Specify the layout to use when the list of choices appears
                adapterArea.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                // Apply the adapter to the spinner
                areaSpinner.setAdapter(adapterArea);

            }
            else  if(citySpinner.getItemAtPosition(i).equals("Delhi"))
            {
                adapterArea = ArrayAdapter.createFromResource(getApplicationContext(),
                        R.array.delhi, android.R.layout.simple_spinner_item);

                // Specify the layout to use when the list of choices appears
                adapterArea.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                // Apply the adapter to the spinner
                areaSpinner.setAdapter(adapterArea);

            }
            else  if(citySpinner.getItemAtPosition(i).equals("Thane"))
            {
                adapterArea = ArrayAdapter.createFromResource(getApplicationContext(),
                        R.array.thane, android.R.layout.simple_spinner_item);

                // Specify the layout to use when the list of choices appears
                adapterArea.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                // Apply the adapter to the spinner
                areaSpinner.setAdapter(adapterArea);

            }
            else  if(citySpinner.getItemAtPosition(i).equals("Select City"))
            {
                buttonAdd.setEnabled(false);
                buttonAdd.setVisibility(View.GONE);
                adapterArea = ArrayAdapter.createFromResource(getApplicationContext(),
                        R.array.blank, android.R.layout.simple_spinner_item);
                // Specify the layout to use when the list of choices appears
                adapterArea.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                // Apply the adapter to the spinner
                areaSpinner.setAdapter(adapterArea);
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });
    areaSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            if(areaSpinner.getItemAtPosition(i).equals("Select Area")|| areaSpinner.getItemAtPosition(i).equals("Select City First!"))
            {
                buttonAdd.setEnabled(false);
                buttonAdd.setVisibility(View.GONE);
            }
            else
            {
                buttonAdd.setEnabled(true);
                buttonAdd.setVisibility(View.VISIBLE);
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

Activity.xml

    <com.toptoche.searchablespinnerlibrary.SearchableSpinner
        android:id="@+id/spinnerCity"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_marginTop="24dp"
        android:entries="@array/city_name"
        app:hintText="Select City"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView3" />

    <com.toptoche.searchablespinnerlibrary.SearchableSpinner
        android:id="@+id/spinnerArea"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_marginTop="32dp"
        app:hintText="Select Area"
        app:layout_constraintEnd_toEndOf="@+id/spinnerCity"
        app:layout_constraintStart_toStartOf="@+id/spinnerCity"
        app:layout_constraintTop_toBottomOf="@+id/spinnerCity" />

Solution

  • Change your create adapter code. Try this,

     ArrayAdapter  adapterArea=new ArrayAdapter(getBaseContext(),android.R.layout.simple_spinner_dropdown_item,getResources().getStringArray(R.array.mumbai));
        areaSpinner.setAdapter(adapterArea);