Soru & Cevap

Firebase'den spinner'a veri çekme

26.01.2020 - 12:16

Merhaba ben android studioda bi proje üzerinde çalışıyorumda Database olarak firebase kullanıyorum. Kullanıcının konumunu seçmesi için 2 adet spinner ekledim birisi il diğeride seçilen il'e göre ilçe seçmek için ben bu spinnerları 2 farklı yerde kullanacağım için projemde string dosyasına yazarsam dosyanın boyutu artacak bende biraz soruşturdum ama pek bişey bulamadım ben il ve ilçeleri firebase'den çekmek istiyorumda bunun için il ve ilçeleri firebase nasıl kayıt etmem gerekiyor ve daha sonra spinner'a çekmek için nasıl bi yol izlemeliyim ama en önemlisi firebase nasıl kayıt edebilirim?

294 Görüntülenme

2 Cevap

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

picture-112887-1506457490.jpg
recepözen
29.02.2020 - 10:18

https://discord.gg/f7G9FR

 

picture-112887-1506457490.jpg
recepözen
27.01.2020 - 08:25

Merhaba il ve ilçeler sabit mi ? Eğer sabit ise değişmeyecekler ise veritabanına ihtiyaç yok.

Bir json dosyasından çok rahat bir şekilde okuyabilirsin. 

 

Öncelikle ben projemde birden fazla json okumaları yapıyorum. Aşağıda verdiğim kodu kullanarak rahat bir şekilde vei okuması yapabilirsin.

 

ilk adım;

 https://dosya.co/eghoukisxlsg/iller.json.html bu linkten il ve ilçeleri içeren jsonu indiriyorsun.

 

ikinci adım;

O jsonu okuyacak entity'i oluşturmak ; 

package com.recepozen;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Iller{

private String il;

private Integer plaka;

private List<String> ilceleri = null;

public String getIl() {
return il;
}

public void setIl(String il) {
this.il = il;
}

public Integer getPlaka() {
return plaka;
}

public void setPlaka(Integer plaka) {
this.plaka = plaka;
}

public List<String> getIlceleri() {
return ilceleri;
}

public void setIlceleri(List<String> ilceleri) {
this.ilceleri = ilceleri;
}

}

 

Ardında jsonu okuyabiliriz.

bunu Activity'nin onCreate mothodunda kullanarak jsonu okuyabilirsiniz.

        Spinner spinner = findViewById(R.id.spinner)

        Gson gson = new Gson();
        Type listType;

        String json =  convertJsonData(this.getResources().openRawResource(R.raw.iller));

        listType = new TypeToken<ArrayList<Iller>>() {
        }.getType();
        List<Iller> illerList = gson.fromJson(json, listType);

        List<String> illerStringList = new ArrayList<>();
 
        illerStringList.clear();
        for(Iller iller : illerList){
        
        illerStringList.add(iller.getIl());
 
        }

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),  android.R.layout.simple_spinner_dropdown_item, illerStringList);
        adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(adapter);


 

Burayada jsonu okuyan methodu bırakıyorum;

 

    public String convertJsonData(InputStream inputStream) {

        try {

            BufferedReader jsonReader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder jsonBuilder = new StringBuilder();
            for (String line = null; (line = jsonReader.readLine()) != null; ) {
                jsonBuilder.append(line).append("\n");
            }

            return jsonBuilder.toString();

        } catch (FileNotFoundException e) {
            Log.e("jsonFile", "file not found");
        } catch (IOException e) {
            Log.e("jsonFile", "ioerror");
        }

        return null;
    }

 

Son olarak ikinci spinner'a atamayı birinci spinner seçim işleminden sora yapmalısınız. Aynı adapter ile ilk spinner'ın seçim sırasına göre iller listesindeki ilin altında bulunan ilçeleri direk spinnera atayabilirsiniz. İnşallah faydalı olur kolay gelsin. 

 

 

 

hakan cansiz
02.02.2020 - 07:06
Hocam yorumun için çok teşekkür ederim en kısa zamanda deneyip geri dönüş yapmak üzere tekrardan çok teşekkür ederim.
hakan cansiz
29.02.2020 - 12:46
Biraz geç bi yorum oldu ama hocam ben 1.spinnerdan seçilene göre 2. Spinner ı listeleyemiyorumda rica etsem yardımcı olabilirmisin projemde sadece bu kısım kaldı diğer bütün kısımları hallettim eğer bu kısmıda yaparsam google play de paylaşmayı düşünüyorum.