Как получить количество элементов, присутствующих в FirebaseListAdapter? - PullRequest
0 голосов
/ 19 октября 2019

Я использую FirebaseListAdapter для ListView, и он прекрасно работает. У меня есть дополнительное требование для отображения количества элементов, присутствующих в ListView. Как мне это сделать?

Я прочитал документацию FirebaseListAdapter и обнаружил, что существует метод getCount(), который должен возвращать количество элементов. Но это всегда возвращает ноль. Ниже приведен код, который у меня есть. Чего мне не хватает?

    mAppointmentAdapter = new FirebaseListAdapter<Appointment>(options) {

    @Override
        public void populateView(View view, Appointment appointment, int position) {

            TextView nameTextView = view.findViewById(R.id.app_patient_name_view);
            TextView reasonTextView = 

         ...         
        }

    };
    appointmentListView.setAdapter(mAppointmentAdapter);

    // Display count of appointments
    int mAppointmentsCount;
    mAppointmentsCount = mAppointmentAdapter.getCount();
    mAppointmentsCountView.setText(String.valueOf(mAppointmentsCount));

Нужно количество элементов в ListView или адаптере.

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Я думаю, что у Алекса правильная идея: скорее всего элементы еще не были загружены из базы данных, когда вы вызываете mAppointmentAdapter.getCount(), поэтому он правильно возвращает 0.

Этот вызов, скорее всего, должен быть внутри populateView, как сказал Алекс, или в onDataChanged методе вашего адаптера. onDataChanged вызывается FirebaseUI всякий раз, когда он обновляет данные, так что это идеальное место для обновления вашего счетчика:

@Override
public void onDataChanged() {
  int mAppointmentsCount = mAppointmentAdapter.getCount();
  mAppointmentsCountView.setText(String.valueOf(mAppointmentsCount));
}

Если эти знания не позволяют решить проблему, пожалуйста,отредактируйте свой вопрос, чтобы он показывал , когда / , где этот вызов mAppointmentAdapter.getCount() существует, так как это повышает вероятность того, что мы можем помочь.

0 голосов
/ 20 октября 2019

Я пропустил, что API Firebase являются асинхронными. Использовал метод onDataChanged (), приведенный выше Фрэнком. Работал как шарм.

...