我正在使用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(( 方法。像魅力一样工作。