如何获取 FirebaseListAdapter 中存在的元素计数?



我正在使用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或适配器中的元素计数。

我认为 Alex 在这里的想法是正确的:当您调用mAppointmentAdapter.getCount()时,很可能项目尚未从数据库中加载,因此它正确返回0

正如 Alex 所说,该调用可能位于populateView内部,或者位于适配器的onDataChanged方法中。每当 FirebaseUI 更新数据时都会调用该onDataChanged,因此这也是更新计数器的理想位置:

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

如果这些知识无法让您解决问题,请编辑您的问题以显示何时/何地存在对mAppointmentAdapter.getCount()的调用,因为这会使我们更有可能提供帮助。

我错过了Firebase API是异步的。使用了上面弗兰克给出的 onDataChanged(( 方法。像魅力一样工作。

相关内容

  • 没有找到相关文章

最新更新