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.