Android 如何显示值​;从三个列表视图中的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

我想在listView中显示firebase实时数据库中的数据,但我遇到了一个问题,无法解决

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));