Java Firebase Android中的ListView制作

Java Firebase Android中的ListView制作,java,android,firebase,firebase-realtime-database,android-arrayadapter,Java,Android,Firebase,Firebase Realtime Database,Android Arrayadapter,我有一个Firebase数据库,几乎没有客户值,如下所示。(我在括号里提到了那个孩子) 我需要从数据库中获取子项(“名称”),并将其放入列表视图中 我的声明为 ListView customerList; List<String> customerArray = new ArrayList<>(); ArrayAdapter<String> adapter; ListView将代码填充为 DatabaseReference ref = FirebaseDat

我有一个Firebase数据库,几乎没有客户值,如下所示。(我在括号里提到了那个孩子)

我需要从数据库中获取子项(“名称”),并将其放入
列表视图中

我的
声明

ListView customerList;
List<String> customerArray = new ArrayList<>();
ArrayAdapter<String> adapter;
ListView将代码填充为

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child(month);
    DatabaseReference NameRef = ref.child("name");

    NameRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){

                String nameDatabase = postSnapshot.getValue(String.class);
                customerArray.add(nameDatabase);
                adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, customerArray);
                customerList.setAdapter(adapter);
            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

            Log.w("name","load:onCancelled",databaseError.toException());

        }
    });
databasereferef=FirebaseDatabase.getInstance().getReference().child(月);
DatabaseReference NameRef=ref.child(“名称”);
NameRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot postSnapshot:DataSnapshot.getChildren()){
String nameDatabase=postsnashot.getValue(String.class);
customerArray.add(名称数据库);
adapter=new ArrayAdapter(getApplicationContext(),android.R.layout.simple\u list\u item\u 1,customerArray);
customerList.setAdapter(适配器);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
Log.w(“name”,“load:onCancelled”,databaseError.toException());
}
});

什么也没发生。我在这段代码中哪里出错了?

如果您想要一个姓名列表,请尝试以下操作:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child(registeredUser);
 DatabaseReference nameRef = ref.child(month);

NameRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){

            String name=postSnapshot.getKey();
            customerArray.add(name);
            adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, customerArray);
            customerList.setAdapter(adapter);
        }

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

        Log.w("name","load:onCancelled",databaseError.toException());

    }
});

getKey()
将检索数据库中的名称

如果需要名称列表,请尝试以下操作:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child(registeredUser);
 DatabaseReference nameRef = ref.child(month);

NameRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){

            String name=postSnapshot.getKey();
            customerArray.add(name);
            adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, customerArray);
            customerList.setAdapter(adapter);
        }

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

        Log.w("name","load:onCancelled",databaseError.toException());

    }
});
  final ArrayList<String> names= new ArrayList<>();
        FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
        DatabaseReference databaseReference = firebaseDatabase.getReference("User").child(userName).child(monthName);

        final ValueEventListener valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for(DataSnapshot ds : dataSnapshot.getChildren()) {
                    HashMap nameModel = (HashMap) dataSnapshot.getValue();
                    String name =(String) nameModel.get("name");
                    names.add(name);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        };
        databaseReference.addValueEventListener(valueEventListener);
getKey()
将检索数据库中的名称

  final ArrayList<String> names= new ArrayList<>();
        FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
        DatabaseReference databaseReference = firebaseDatabase.getReference("User").child(userName).child(monthName);

        final ValueEventListener valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for(DataSnapshot ds : dataSnapshot.getChildren()) {
                    HashMap nameModel = (HashMap) dataSnapshot.getValue();
                    String name =(String) nameModel.get("name");
                    names.add(name);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        };
        databaseReference.addValueEventListener(valueEventListener);
如果没有用户作为表名

 -registeredUserName
            -monthName
              -childName
                   name
那就过去吧

DatabaseReference databaseReference = firebaseDatabase.getReference().child(userName).child(monthName);
如果没有用户作为表名

 -registeredUserName
            -monthName
              -childName
                   name
那就过去吧

DatabaseReference databaseReference = firebaseDatabase.getReference().child(userName).child(monthName);

要显示所有这些名称,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference monthRef = rootRef.child(registeredUser).child(month);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> list = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            list.add(name);
        }
        ListView listView = (ListView) findViewById(R.id.list_view);
        ArrayAdapter arrayAdapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, list);
        listView.setAdapter(arrayAdapter);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
monthRef.addListenerForSingleValueEvent(eventListener);

在代码中,有两个主要问题。第一个是您的引用,它在
ref
中缺少一个子项,在
NameRef
中指向无用的属性。第二个问题是,您正在for循环内创建和设置适配器,该适配器最终将显示一个项目(最后一个项目)。

要显示所有这些名称,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference monthRef = rootRef.child(registeredUser).child(month);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> list = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            list.add(name);
        }
        ListView listView = (ListView) findViewById(R.id.list_view);
        ArrayAdapter arrayAdapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, list);
        listView.setAdapter(arrayAdapter);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
monthRef.addListenerForSingleValueEvent(eventListener);

在代码中,有两个主要问题。第一个是您的引用,它在
ref
中缺少一个子项,在
NameRef
中指向无用的属性。第二个问题是,您正在for循环中创建和设置适配器,结果将显示一个项目(最后一个项目)。

我将检查并让您知道我将检查并让您知道您要求的是
-名称:“Aswatyy”-(child(“name”)-
对吗?您要求的是
-名称:“Aswatyy”-(child(“name”)))-
对吗?