ホームページ > Java > &#&チュートリアル > Firebase ユーザー ID とスコアを ListView に効率的に表示するにはどうすればよいですか?

Firebase ユーザー ID とスコアを ListView に効率的に表示するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-01 12:10:12
オリジナル
593 人が閲覧しました

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

Score プロパティを使用して ListView に Firebase データを表示する

Firebase データのユーザー ID とスコアの両方を ListView に表示しようとすると、スコア値は最初は利用できない場合があります。この問題に対処し、両方のプロパティを効果的に表示するための包括的なガイドを次に示します。

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);
ログイン後にコピー

スコアを使用したデータの取得と表示Class

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);
ログイン後にコピー

以上がFirebase ユーザー ID とスコアを ListView に効率的に表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート