没有获取Firebase数据库数据

时间:2017-11-15 10:23:49

标签: android listview firebase firebase-realtime-database android-arrayadapter

我正在开发应用程序来显示存储在firebase数据库中的用户分数但是在运行应用程序之后它不会在listview中显示数据

下面是我的代码: -

SqlLocalDB.exe info

数据库快照:

enter image description here

输出: -

enter image description here

3 个答案:

答案 0 :(得分:2)

试试这个:

listViewLeaderBoard = (ListView) findViewById(R.id.listView_leader_board);

    reference = FirebaseDatabase.getInstance().getReference("score");

    leaderBoards = new ArrayList<>();

    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()){
                LeaderBoard leaderBoard = postSnapshot.getValue(LeaderBoard.class);
                leaderBoards.add(leaderBoard);
         CustomLeaderBoardAdapter adapter = new CustomLeaderBoardAdapter(getApplicationContext(),R.layout.leader_board_list_layout,leaderBoards);
    listViewLeaderBoard.setAdapter(adapter);
    adapter.notifyDataSetChanged();
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

答案 1 :(得分:1)

要解决此问题,请移动以下代码:

(function($) {
  // body code
})(jQuery);

List<LeaderBoard> leaderBoards = new ArrayList<>(); 方法内部,否则它将始终是,因为此方法的异步行为甚至在您尝试将onDataChange()类的对象添加到列表之前调用。

此外,不再需要LeaderBoard。您的代码应如下所示:

leaderBoards.clear();

答案 2 :(得分:1)

您可以在Firebase控制台中找到并更改数据库的规则。只需选择您的项目,单击左侧的“数据库”部分,然后选择“规则”选项卡。我不知道您是否已经这样做了试试这个希望这会对你有帮助。

{
"rules": {
".read": true,
".write": true
}
}