Rumah >Java >javaTutorial >Bagaimana untuk Memaparkan ID dan Skor Pengguna Firebase dengan Cekap dalam ListView?
Memaparkan Data Firebase dalam ListView dengan Score Property
Apabila cuba memaparkan kedua-dua ID Pengguna dan Score daripada data Firebase dalam ListView, nilai skor mungkin pada mulanya tidak tersedia. Berikut ialah panduan komprehensif untuk menangani isu ini dan mempersembahkan kedua-dua sifat dengan berkesan.
Sifat Asynchronous Firebase API
Kaedah onDataChange() yang digunakan untuk mendapatkan data daripada Firebase adalah tak segerak , bermakna ia boleh dipanggil sebelum objek Score ditambahkan pada senarai. Untuk menangani perkara ini, isytiharkan senarai dalam kaedah onDataChange() atau gunakan teknik untuk mengendalikan tingkah laku tak segerak dengan berkesan.
Struktur dan Jenis Data
Pastikan kelas Skor anda mengikut Konvensyen Penamaan Java untuk ahli data. Selain itu, ubah suainya seperti berikut:
public class Score { private String userId; private String score; // ... [other class methods] }
Pendapatan Data dan Paparan Menggunakan String
Untuk memaparkan data menggunakan kelas String, gunakan coretan kod di bawah:
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);
Pendapatan dan Paparan Data Menggunakan Skor Kelas
Untuk mendapatkan dan memaparkan data menggunakan kelas Skor, gunakan coretan kod berikut:
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);
Atas ialah kandungan terperinci Bagaimana untuk Memaparkan ID dan Skor Pengguna Firebase dengan Cekap dalam ListView?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!