Android 如何显示值;从三个列表视图中的firebase?
我想在listView中显示firebase实时数据库中的数据,但我遇到了一个问题,无法解决Android 如何显示值;从三个列表视图中的firebase?,android,firebase,Android,Firebase,我想在listView中显示firebase实时数据库中的数据,但我遇到了一个问题,无法解决 ArrayList<String> listYes = new ArrayList<>(); ArrayList<String> listNo = new ArrayList<>(); ArrayList<String> listOff = new ArrayList<>(); private ListView listRes
ArrayList<String> listYes = new ArrayList<>();
ArrayList<String> listNo = new ArrayList<>();
ArrayList<String> listOff = new ArrayList<>();
private ListView listResultsYes;
private ListView listResultsNo;
private ListView listResultsOff;
private void getnotesRealTime() {
listYes = new ArrayList<>();
listNo = new ArrayList<>();
listOff = new ArrayList<>();
listResultsYes.setAdapter(new ArrayAdapter(AfterLogged.this, android.R.layout.simple_list_item_1, listYes));
listResultsNo.setAdapter(new ArrayAdapter(AfterLogged.this, android.R.layout.simple_list_item_1, listNo));
listResultsOff.setAdapter(new ArrayAdapter(AfterLogged.this, android.R.layout.simple_list_item_1, listOff));
DatabaseReference r = FirebaseDatabase.getInstance().getReference().child("notes");
r.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
dbRealTime dbRealTime = new dbRealTime();
Log.w("onChildAdded", "new data" + dataSnapshot.getKey() + dataSnapshot.child("name").getValue().toString() + "glos: " + dataSnapshot.child("castnote").getValue().toString());
noteUserID = dataSnapshot.getKey();
dbRealTime.setCastNote(dataSnapshot.child("castnote").getValue().toString());
dbRealTime.setNameUser(dataSnapshot.child("name").getValue().toString());
if(dbRealTime.getCastnote().contains("1"))
{
//listYes.add(noteUserID);
listYes.add(dbRealTime.getNameUser());
//listResultsYes.deferNotifyDataSetChanged();
}
if(dbRealTime.getCastnote().contains("0"))
{
listNo.add(dbRealTime.getNameUser());
//.deferNotifyDataSetChanged();
}
if(dbRealTime.getCastnote().contains("2"))
{
listOff.add(dbRealTime.getNameUser());
//listResultsYes.deferNotifyDataSetChanged();
}
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
看起来您从未初始化过
listResultsYes
字段,这会导致在调用setAdapter
字段时,这些字段为null
。另请参见“谢谢”,没有错误,但数据未显示在listView中-为什么?很难从您共享的内容中确定,但我注意到的一点是,当数据发生更改时,您没有通知适配器。如果不通知它们,适配器就无法知道它们需要重新绘制视图。要通知适配器,请调用其notifyDataSetChanged
方法。我建议遵循Android文档中关于构建您自己的适配器的一些教程,因为这里通常会涉及到这一点,在这里很难发现问题。
listResultsYes.setAdapter(new ArrayAdapter(AfterLogged.this, android.R.layout.simple_list_item_1, listYes));
listResultsNo.setAdapter(new ArrayAdapter(AfterLogged.this, android.R.layout.simple_list_item_1, listNo));
listResultsOff.setAdapter(new ArrayAdapter(AfterLogged.this, android.R.layout.simple_list_item_1, listOff));