首页 > Java > java教程 > 如何在 ListView 中高效显示 Firebase 用户 ID 和分数?

如何在 ListView 中高效显示 Firebase 用户 ID 和分数?

Linda Hamilton
发布: 2024-12-01 12:10:12
原创
594 人浏览过

How to Efficiently Display Firebase User IDs and Scores in a ListView?

在 ListView 中使用 Score 属性显示 Firebase 数据

尝试在 ListView 中显示 Firebase 数据中的用户 ID 和分数时,分数值最初可能不可用。这是解决此问题并有效呈现这两个属性的综合指南。

Firebase API 的异步性质

用于从 Firebase 检索数据的 onDataChange() 方法是异步的,这意味着可以在将 Score 对象添加到列表之前调用它。要解决此问题,请在 onDataChange() 方法中声明列表或采用有效处理异步行为的技术。

数据结构和类型

确保您的 Score 类遵循数据成员的 Java 命名约定。另外,修改如下:

public class Score {
    private String userId;
    private String score;

    // ... [other class methods]
}
登录后复制

使用 String 进行数据检索和显示

要使用 String 类显示数据,请使用下面的代码片段:

ListView listView = (ListView) findViewById(R.id.list_view);
List<String> list = new ArrayList<>(); // Declare list within onDataChange() method
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, list);
listView.setAdapter(arrayAdapter);
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference scoreRef = rootRef.child("score");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String userId = ds.child("userId").getValue(String.class);
            String score = ds.child("score").getValue(String.class);
            list.add(userId + " / " + score);
        }
        arrayAdapter.notifyDataSetChanged();
    }

    // ... [onCancelled() method]
};
scoreRef.addListenerForSingleValueEvent(eventListener);
登录后复制

使用分数进行数据检索和显示类

要使用 Score 类检索和显示数据,请使用以下代码片段:

ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            Score score = ds.getValue(Score.class);
            String userId = score.getUserId();
            String score = score.getScore();
            list.add(userId + " / " + score);
        }
        arrayAdapter.notifyDataSetChanged();
    }

    // ... [onCancelled() method]
};
scoreRef.addListenerForSingleValueEvent(eventListener);
登录后复制

以上是如何在 ListView 中高效显示 Firebase 用户 ID 和分数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板