Rumah > Java > javaTutorial > Mengapa Saya Mendapat Nilai Null Apabila Memaparkan Data Firebase dalam ListView?

Mengapa Saya Mendapat Nilai Null Apabila Memaparkan Data Firebase dalam ListView?

Mary-Kate Olsen
Lepaskan: 2025-01-03 00:51:38
asal
263 orang telah melayarinya

Why Am I Getting Null Values When Displaying Firebase Data in a ListView?

Menunjukkan Data Firebase dalam ListView: Menyelesaikan Masalah Nilai Null

Semasa cuba memaparkan data Firebase dalam ListView, isu boleh timbul apabila cuba mendapatkan semula nilai tertentu. Jika anda menghadapi nilai nol semasa cuba memaparkan kedua-dua ID pengguna dan skor, adalah penting untuk menyemak kod anda dengan teliti dan memastikan ia mengikut amalan terbaik.

Konvensyen Penamaan Java untuk Kelas Model

Satu faktor penting yang mempengaruhi pengambilan semula data yang betul ialah mematuhi konvensyen penamaan Java untuk kelas model anda. Dalam kes ini, kelas model "Skor" harus diubah suai untuk memadankan konvensyen ini:

public class Score {
    private String userId, score;

    public Score() {}

    public Score(String userId, String score) {
        this.userId = userId;
        this.score = score;
    }

    public String getUserId() {
        return userId;
    }

    public String getScore() {
        return score;
    }

    @Override
    public String toString() {
        return "Score{" +
                "userId='" + userId + '\'' +
                ", score='" + score + '\'' +
                '}';
    }
}
Salin selepas log masuk

Sifat Tak Segerak Pengambilan Data

Kaedah onDataChange() yang digunakan untuk mendapatkan semula data dalam Firebase mempunyai sifat tak segerak. Ini bermakna ia digunakan walaupun sebelum anda cuba menambah objek yang diambil (daripada jenis Skor) pada senarai. Akibatnya, senarai anda mungkin kekal kosong jika anda mengaksesnya di luar kaedah onDataChange().

Mengubah suai Kod Pengambilan Data

Andaikan nod "skor" ialah anak langsung dari akar Firebase anda, anda boleh mengubah suai kod pengambilan data anda sebagai berikut:

Menggunakan Kelas Rentetan

ListView listView = (ListView) findViewById(R.id.list_view);
List<String> list = new ArrayList<>();
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);
            Log.d("TAG", userId + " / " + score);
        }
        arrayAdapter.notifyDataSetChanged();
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d(TAG, task.getException().getMessage());
    }
};
scoreRef.addListenerForSingleValueEvent(eventListener);
Salin selepas log masuk

Menggunakan Kelas Skor

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();
            Log.d("TAG", userId + " / " +  score);
            list.add(score);
        }
        arrayAdapter.notifyDataSetChanged();
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d(TAG, task.getException().getMessage());
    }
};
scoreRef.addListenerForSingleValueEvent(eventListener);
Salin selepas log masuk

Dengan mengikuti pelarasan ini, anda harus berjaya memaparkan data Firebase dalam ListView anda, mendapatkan kedua-dua ID pengguna dan skor sebagai dimaksudkan.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Nilai Null Apabila Memaparkan Data Firebase dalam ListView?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan