Android - ListView将用户显示为null

时间:2017-11-04 11:24:28

标签: android firebase firebase-realtime-database

我的应用程序中有一个活动,我想显示所有经过身份验证的用户的列表。为此我使用listview和arrayadapter。

问题:当我查询我的用户并在列表视图中显示它们时,列表显示两行都包含“null”。我不知道为什么。

import sys
from PyQt5.QtWidgets import *

class CustomWidget(QWidget):

    def __init__(self):

        super().__init__()
        self.layout = QVBoxLayout(self)
        self.setLayout(self.layout)


        self.innerwidget=QWidget()
        self.layout.addWidget(self.innerwidget)
        self.innerwidget.setFixedSize(50,50)

        self.setFixedSize(100,100)
        self.setStyleSheet("background-color:blue;")




class MainWindow(QMainWindow):

    def __init__(self):

        super().__init__()

        self.CentralWidget=QWidget()
        self.setCentralWidget(self.CentralWidget)
        self.CentralWidget.setStyleSheet("background-color:green;")


        self.CentralWidget.resize(1000,600)

        self.Layout=QHBoxLayout()
        self.CentralWidget.setLayout(self.Layout)

#----Script---------

App=QApplication(sys.argv)

TestWindow=MainWindow()

#This one is there, since I can´t reduce the size of the MainWindow further than 100x100,
# but it doesnt get drawn
TestWidget=CustomWidget()
TestWindow.Layout.addWidget(TestWidget)

#This one is shown correctly
TestWidget2=CustomWidget()
TestWidget2.show()

TestWindow.show()

App.exec()

数据库

enter image description here

1 个答案:

答案 0 :(得分:1)

据我所知,您的database已经指向特定学校的特定用户。例如,路径/SomeSchoolName/Users/LAGbzHr...包含单个用户的属性。在这种情况下,不需要监听器中的for循环,实际上会使您在JSON中过深一级。

这对您共享的数据结构应该更好:

users.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        userArray.add(dataSnapshot.child("username").getValue(String.class)) ;

        ArrayAdapter adapter = new ArrayAdapter(StudentListActivity.this, android.R.layout.simple_list_item_1, userArray);
        userList.setAdapter(adapter);
    }