Spinner не отображает выбранное значение

Я применил spinner, заполнив список массивов через базу данных. Я могу получить и показать список массивов в моем адаптере массива spinner, но если я выберу элемент в spinner, он не будет показан в spinner? Что я здесь ошибся?

Вот мой код,

 Spinner spinner1 = (Spinner) findViewById(R.id.prospin);
     ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, providerlist);

  adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter1);

Я получаю выбранную строку элемента, используя это,

Spinner provid = (Spinner)findViewById(R.id.prospin);
String provider =provid.getSelectedItem().toString();

Может кто-нибудь помочь мне с PLS!!!

Ответ 1

Этот ответ может быть немного глупым, но попробуйте. Это сработало для меня.

  • Проверьте цвет фона вашего счетчика!
  • И если это белый цвет, измените его
  • Наслаждайтесь этим!

Ответ 2

Я получил ту же проблему и решил, добавив notifyDataSetChanged() после привязки данных в Spinner.

Прежде всего, у меня есть адаптер связывания с пустым списком ArrayList затем я получаю список элементов с сервера и добавляю его в этот список, но забыл notifyDataSetChanged() после обновления списка.

просто добавьте adapter.notifyDataSetChanged(); после обновления списка.

Надеюсь, это будет полезно.

Ответ 3

Проблема:

Spinner не отображает значение по умолчанию или выбранное значение. Но выпадающие пункты меню отображаются при выборе.

Причина:

Фон и цвет текста оба белого цвета.

Решение:

XML (Предпочитаемый):

Напишите пользовательский макет для элемента spiner и используйте его вместо стандартного, android.R.layout.simple_spinner_item.

Как изменить размер шрифта и цвет текста?

Код (менее надежный):

your_spinner_instance.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
    public void onItemSelected(AdapterView<?> parent, View view, int pos,
                               long id) {
        ((TextView) view).setTextColor(Color.RED);
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }

});

Android нуждается в каком-то крупном обновлении, или, может быть, дротик и флаттер должны перенести...

Спасибо Catluc

Ответ 4

Используйте wrap_content для высоты Spinner.

Возможно, ему не хватает высоты для отображения текста.

Ответ 5

если у вас есть пользовательский адаптер, вы должны изменить цвет текста TextView

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    TextView view = (TextView) super.getView(position, convertView, parent);
    view.setTextColor(Color.parseColor("#000000"));
    return view;
}

и если у вас нет пользовательского адаптера, вам нужно просто сменить фон спиннера

Ответ 6

Хорошо, это также происходит, если контекст не задан должным образом. Я использовал getApplicationContext(), где ему нужно getBaseContext().

Ответ 7

Проверьте эти ссылки:

Повторите попытку, чтобы сохранить его при выборе элемента:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> adapter, View v,
                    int position, long id) {
                // On selecting a spinner item
                String item = adapter.getItemAtPosition(position).toString();

                // Showing selected spinner item
                Toast.makeText(getApplicationContext(),
                        "Selected Country : " + item, Toast.LENGTH_LONG).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });

Ответ 8

используйте атрибут android:spinnerMode="dropdown" в объявленном элементе Spinner xml

Ответ 9

Попробуйте это.

 final ArrayList<String> providerlist= new ArrayList<String>();
    Spinner spinner1 = (Spinner) findViewById(R.id.prospin);
    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, providerlist);

    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(adapter1);
    spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                            // On selecting a spinner item
            String item = providerlist.get(position);

            // Showing selected spinner item
            Toast.makeText(this,
                    "Selected Country : " + item, Toast.LENGTH_LONG).show();
        }

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

        }
    });

Ответ 10

Как правило, при использовании они выбираются по умолчанию, поэтому постарайтесь установить пустые или любые другие данные в первую позицию, которая равна нулю, вы получите точную позицию выбранного вами элемента.

Ответ 11

Проблема с тем, что я нашел, это с таблицей стилей. Используйте этот

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  <!-- Customize your theme here. -->
  <item name="windowNoTitle">false</item>
  <item name="windowActionBar">true</item>
  <item name="colorPrimary">@color/colorPrimary</item>
  <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
  <item name="colorAccent">@color/colorAccent</item>
</style> 

Для макета xml используйте этот

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fitsSystemWindows="true"
    android:paddingBottom="5dp"
    style="@style/AppTheme">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="5dp"
        android:paddingLeft="24dp"
        android:paddingRight="24dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Spinner"
            android:layout_marginTop="10dp"
            android:textColor="@color/colorBlack"/>

        <Spinner
            android:id="@+id/Spinner"
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:backgroundTint="@color/colorPrimary"
            android:textColorHint="#05ab9a"
            android:padding="15dp"
            style="@style/Base.Widget.AppCompat.Spinner.Underlined"
            tools:targetApi="lollipop" />
    </LinearLayout>
</ScrollView>

И, наконец, для класса

String [] NUMBERS= {"3 ","6 ","13 "};

Spinner s_spinner = (Spinner) findViewById(R.id.Spinner);

ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(this,
                    android.R.layout.simple_dropdown_item_1line, NUMBERS);

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

// attaching data adapter to spinner
s_spinner.setAdapter(spinnerAdapter );

Ответ 12

попробуйте этот код == >

ArrayAdapter<String> stateNameAdaptor = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, stateNameList);  
     stateNameAdaptor.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spnState.setAdapter(stateNameAdaptor);

Ответ 13

Этот ответ может быть немного глупым, но если вы сделаете ту же ошибку, попробуйте... сначала установите значения в свой ArrayList, а затем назначьте этот массивList для вращения. Я объявил глобальный список массивов и сначала установил его, а затем добавил значения к нему из другого метода... в то время я столкнулся с той же проблемой. В противном случае вы можете сделать notifyDataSetChanged() в своем списке arrayList.

Ответ 14

Для меня проблема в том, что я использовал getApplicationContext(). Когда я заменяю getApplicationContext() на this, он работает нормально.

ArrayAdapter<*> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, documentsCategories);

Ответ 15

Wierd. У меня такая же проблема. Что я сделал, чтобы заставить его работать: 1. Добавьте некоторые начальные данные в список (например, ---, пожалуйста, выберите - -) 2. Загрузите оставшиеся данные и добавьте их в список 3. Вызовите adapter.notifyDatasetChaged()

Ответ 16

У меня просто была эта проблема, и после попытки всех перечисленных решений выяснилось, что проблема была в том, что я установил spinner layout_width на 60dp.

Изменил его на fill_parent и проблема решена.

Ответ 17

Вы должны использовать первый Spinner для получения значений.

Попробуйте использовать следующий код:

String provider = spinner1.getSelectedItem().toString();

Что вы делаете, так это получение значения по умолчанию для счетчика.

Ответ 18

Попробуйте этот код

ArrayAdapter<String> arrayAdapte=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,states);
    arrayAdapte.setDropDownViewResource(android.R.layout.simple_list_item_1 );
    spinnerState.setAdapter(arrayAdapte);

    String data=spinnerState.getSelectedItem().toString(); // this is select particular item from list;

    int position=spinnerState.getSelectedItemPosition(); // this return position of data selected in list; 

Ответ 19

Вы должны сделать некоторые изменения как:

Spinner spinner1 = (Spinner) findViewById(R.id.prospin);
 ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, providerlist);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

вместо "android.R.layout.simple_spinner_dropdown_item"

adapter1.setDropDownViewResource(android.R.layout.simple_list_item_activated_1);

Используйте "android.R.layout.simple_list_item_activated_1"

spinner1.setAdapter(adapter1);

Он отобразит выбранное значение соответствующим образом. Выбранный цвет выбран по умолчанию для ваших приложений.

Для получения дополнительной информации см. ниже ссылку: https://developer.android.com/reference/android/R.layout.html#simple_list_item_activated_1

Ответ 20

out_marginLeft="50dp"
            android:layout_marginTop="50dp"
            android:layout_marginRight="50dp"
            android:gravity="center"
            android:orientation="vertical">

            <ProgressBar
                android:id="@+id/progressBar"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/txtProgress"
                android:layout_centerHorizontal="true"
                android:layout_marginLeft="16dp"
                android:layout_marginRight="16dp"
                android:progress="50"
                android:progressTint="@android:color/black" />

            <TextView
                android:id="@+id/txtProgress"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:text="Progress"
                android:textColor="@android:color/black" />
        </LinearLayout>  

Java