Как добавить подсказку в виджет Spinner, заполненный данными из базы данных FireBase? - PullRequest
0 голосов
/ 30 августа 2018

Мой код xml:

<Spinner
    android:id="@+id/destination"
    android:layout_width="344dp"
    android:layout_height="30dp"
    android:autofillHints="Choose destination"
    android:spinnerMode="dropdown" />

Я хочу добавить подсказку (без использования фиктивной записи), которая будет показана пользователю при запуске действия. Встроенная функция xml-подсказки не работает после использования FireBase.

MainActivity:

myRef.child("Stations").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            final List<String> stationname = new ArrayList<String>();

            for (DataSnapshot stationSnapshot : dataSnapshot.getChildren()) {

                 String stationName = stationSnapshot.child("Name").getValue(String.class);
                 stationname.add(stationName);
            }

            Spinner sp2= findViewById(R.id.destination);

            ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(FairPage.this, android.R.layout.simple_spinner_item, stationname);
            arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            sp2.setAdapter(arrayAdapter);

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

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

myRef.child("Stations").addListenerForSingleValueEvent(new 
ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        final List<String> stationname = new ArrayList<String>();
        stationname.add("Select Station");
        for (DataSnapshot stationSnapshot : dataSnapshot.getChildren()) {

             String stationName = stationSnapshot.child("Name").getValue(String.class);
             stationname.add(stationName);
        }

        Spinner sp2= findViewById(R.id.destination);

        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(FairPage.this, android.R.layout.simple_spinner_item, stationname);
        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        sp2.setAdapter(arrayAdapter);

, а также проверьте, выбран ли элемент счетчика

if (stationname.get(postion).equals("Select Station"){
//Toast please  select station 
} 
0 голосов
/ 30 августа 2018

Просто добавьте один элемент в список массивов перед настройкой данных из firebase. Как сделано -

stationname.add("Select Station"); // hint 
myRef.child("Stations").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        final List<String> stationname = new ArrayList<String>();

        for (DataSnapshot stationSnapshot : dataSnapshot.getChildren()) {

             String stationName = stationSnapshot.child("Name").getValue(String.class);
             stationname.add(stationName);
        }

        Spinner sp2= findViewById(R.id.destination);

        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(FairPage.this, android.R.layout.simple_spinner_item, stationname);
        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        sp2.setAdapter(arrayAdapter);
...