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 サイトの他の関連記事を参照してください。