Spinner не показывает выбранный элемент или элемент по умолчанию, но выпадающий список работает - PullRequest
0 голосов
/ 15 декабря 2018

Android Spinner пуст по умолчанию или при выборе элементов.Я попытался использовать макет по умолчанию для спиннера, но все еще пустой.Я проверил все вопросы на этом веб-сайте, но ни один из них не помог.

Вот код:

представление счетчика на Activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:background="@color/background"
    android:orientation="vertical">
   <TextView
        android:id="@+id/showTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Title"
        android:textSize="20sp"
        android:textAlignment="center"
        android:textColor="@color/textColor"
        android:fontFamily="monospace"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
    />
    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spinnerMode="dropdown"

        >

        </Spinner>


</LinearLayout>

Активность:

public class ShowActivity extends AppCompatActivity {

private List<String> list;
Spinner dropdown;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show);

    TextView titleView = findViewById(R.id.showTitle);
    String title = getIntent().getExtras().getString("title");
    titleView.setText(title);

    list = new ArrayList<>();

    dropdown = findViewById(R.id.spinner);

    FirebaseFirestore.getInstance().collection(title).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    list.add(document.getId());
                }
                Log.d("Success ", list.toString());
            } else {
                Log.d("Failed ", "Error getting documents: ", task.getException());
            }
        }
    });


    ArrayAdapter<String> adapter = new ArrayAdapter<String>(ShowActivity.this, R.layout.spinner_items, list);

    adapter.setDropDownViewResource(R.layout.spinner_items);

    dropdown.setAdapter(adapter);

    adapter.notifyDataSetChanged();

}

}

spinner_items.xml:

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/spinnerTV"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:textSize="20sp"
    android:text="Text"
    android:gravity="start"
    android:padding="10dp"
    android:textColor="@color/textColor"
    android:layout_marginBottom="3dp"
    android:layout_margin="8dp"
/>

Заранее спасибо.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

После выпадающего меню .setAdapter (адаптер);Вы должны настроить прослушивание выбранных элементов / щелкнуть, попробуйте это:

dropdown.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//.. do stuff here
   }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
 // do default when nothing is selected
            }
        });
dropdown.setSelection(0) // this makes default selection for dropdown item....

Надеюсь, я мог бы помочь вам, с наилучшими пожеланиями, Csongi

0 голосов
/ 15 декабря 2018

FirebaseFirestore.getInstance().collection(title).get().addOnCompleteListener(...) - это асинхронный вызов.Ваш код будет продолжать выполняться здесь:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(ShowActivity.this, R.layout.spinner_items, list);

    adapter.setDropDownViewResource(R.layout.spinner_items);

    dropdown.setAdapter(adapter);

    adapter.notifyDataSetChanged();

В настоящее время список еще пуст.Вам нужно переместить этот блок внутрь OnCompleteListener.

...