Как заполнить listView значением, полученным из firebase - PullRequest
0 голосов
/ 27 февраля 2020

Я хочу заполнять мой список просмотра каждый раз, когда значение изменяется с измененным значением

Код для ValueEventListener имеет вид

ValueEventListener changeListener3 = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            String carNumber = dataSnapshot.getValue(String.class);

            listPopulate(carNumber);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    };

И функция для заполнения значения:

public void listPopulate(String carNumber)
    {

        List<String> parkings = new ArrayList<>();

        parkings.add(carNumber);

        final ListView listView = findViewById(R.id.listView2);

        final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,parkings);

        listView.setAdapter(arrayAdapter);
    }

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

1 Ответ

0 голосов
/ 27 февраля 2020

Этот оператор, List<String> parkings = new ArrayList<>(); создает новый пустой список каждый раз, когда вызывается listPopulate. Вам нужно переместить List<String> parkings = new ArrayList<>(); за пределы метода listPopulate, чтобы сохранить создаваемый ArrayList.

пример

public List<String> parking;

public void onCreate(xxxxxxxxxxxx){
    XXXXXXXXXXXXXXX

    parking = new ArrayList<>();

}


public void listPopulate(xxxx){
    xxxxxxx
    xxxxxxx
    xxxxxx

}

Если вы хотите сохранить список после закрытия приложения , вам нужно будет кэшировать список локально на устройстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...