Soru & Cevap

Android Studio, Firebase Verileri nasıl listelerim ? ...

21.03.2020 - 03:26

Android Studio daki verileri Firebase den çekebiliyorum ama listview içerisinde listeletemiyorum. Normal sout içerisinde veya textview içerisinde geliyor ama Listview de görünmüyor.

Kodlar bu şekilde. Nerede hatam var acaba ?

package com.example.azizmuhasebeguncel;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.Map;

public class ListUserPage extends AppCompatActivity {

    private FirebaseDatabase mydatabase;
    private DatabaseReference myref;

    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_user_page);
        listView = findViewById(R.id.musteriler);

         final ArrayList<String> list = new ArrayList<>();
         final ArrayAdapter adapter = new ArrayAdapter(ListUserPage.this,android.R.layout.simple_list_item_1,list);


        myref = FirebaseDatabase.getInstance().getReference().child("Musteriler");
        // My top posts by number of stars
        myref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
                    String value = postSnapshot.getValue(String.class).toString();
                    System.out.println("Deger: " + value);
                    list.add(value);
                    listView.setAdapter(adapter);
                    adapter.notifyDataSetChanged();
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
}

 

Yardımcı olursanız çok sevinirim.

603 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-227158-1589293791.jpg
mnknsro413
08.04.2020 - 03:28

Tamam çok teşekkür ederim bunu deniycem.. Bunu yapmadım die Custom Listview ile verileri çektim yine oldu sizinkinizie göz önüne alacam Teşekkürler. 

Profile picture for user mryhn
mryhn
27.03.2020 - 06:04

Kod kısmında bir hata yok bu şekilde çalışması lazım. Sadece for döngüsünün içerisindeki son 2 satırı döngünün dışına taşırsanız daha verimli olur. Her seferinde gelen veriyi set edip adaptörü notify etmeye gerek yok. 

Hatanın sebebi ise muhtemelen veritabanınızdaki yapıdan kaynaklanıyor. Bu yazdığınız koda göre "Musteriler" node'unun altında sadece string'lerden oluşan bir liste olması gerekiyor, yani child'ı bulunan bir yapı varsa(Musteriler->Musteri01->musteriIsmi gibi) veriyi alamazsınız.

Eğer veritabanında bir sıkıntı yoksa layout içerisindeki ListView'ın yükseklik ve genişlik değerlerini kontrol edin ve layout içerisinde görünür olduğundan emin olun.