我已经提到了Retrieving data from Firebase Realtime Database in Android。我的问题是对此的延伸。我试图通过ArrayAdapter使用从firebase检索到的AutoCompleteTextView数据。但是ArrayList和&适配器在onDataChange方法之外是“null”。猜测是因为从数据库中检索数据的延迟(甚至在数据加载完成之前就设置了适配器)。是否存在等待数据加载的回调方法或处理此问题的最佳方法是什么?另外,在onDataChange方法内的Adapter上尝试使用notifyDataSetChanged,仍然没有运气!我正在动态添加AutoCompleteTextView,所以我无法在onDataChange方法中将适配器设置为AutoCompleteTextView。
我的代码......
Query myQuery = mDatabaseRef.orderByChild("medicine");
myQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
medicinesArray = new ArrayList<>();
for (DataSnapshot medicineSnapshot : dataSnapshot.getChildren()) {
String medicineName = medicineSnapshot.child("medicine").getValue(String.class);
medicinesArray.add(medicineName);
}
autoCompletionAdapter = new ArrayAdapter<>
(Prescription.this, android.R.layout.select_dialog_item, medicinesArray);
autoCompletionAdapter.notifyDataSetChanged(); // refresh adapter --- tried this
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
。 。
AutoCompleteTextView testview = (AutoCompleteTextView) findViewById(R.id.test_autocomplete);
testview.setThreshold(2);
testview.setAdapter(autoCompletionAdapter);