我正在开发应用程序来显示存储在firebase数据库中的用户分数但是在运行应用程序之后它不会在listview中显示数据
下面是我的代码: -
SqlLocalDB.exe info
数据库快照:
输出: -
答案 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
}
}