Herhangi bir internet bağlantısı gerekmeksizin, internet ihtiyacı olmayan uygulamalarda lokal olarak android içinde Json veri yapısı kullanabilir.
İlk olarak, bir proje açalım ve res klasörü içinde raw adlı klasör oluşturalım.
- Kullanmak istediğimiz JSON dosyasını, raw klasörüne atmadan önce uygun format haline getirmemiz gerekiyor. Kaynak dosyasından, sorunsuz bir şekilde okuması gerekiyor. Bunun için http://jsonviewer.stack.hu/ sitesinden kontrolu sağlayabilirsiniz.
İl ve ilçe için, Github’daki JSON dosyasını kullanabilirsiniz.
JSON için kullanım için uygun hale getirmek için, http://www.jsonschema2pojo.org sitesini açalım.
- Package: Projenin package ismini yazıyoruz.
- Class Name: Kullanılacak class’ın ismini yazıyoruz.
- Diğer ayarlar ise fotoğraftaki gibi olmalı.
Preview’a bastıktan sonra class’ları kullanmak için model klasörü altında kullanabilirsiniz.
JSON verilerini kullanmak için ve class’larda kullanılan SerializedName ve Expose özelliklerini kullanmak için gson’u gradle klasörüne ekleyip kütüphaneyi eklememiz gerekiyor.
implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
JSON Datasını Okuma Aşaması
Raw klasöründeki, JSON dosyalarını okumak için aşağıdaki kod bloğunu kullanıyoruz.
CityList cityList = new CityList();
try {
//Load File
BufferedReader jsonReader = new BufferedReader(new InputStreamReader(this.getResources().openRawResource(R.raw.citys)));
StringBuilder jsonBuilder = new StringBuilder();
for (String line = null; (line = jsonReader.readLine()) != null; ) {
jsonBuilder.append(line).append(“\n”);
}
Gson gson = new Gson();
cityList = gson.fromJson(jsonBuilder.toString(),CityList.class);
Log.d(“Deneme”,cityList.getCityDetail().get(0).getName());
} catch (FileNotFoundException e) {
Log.e(“jsonFile”, “file not found”);
} catch (IOException e) {
Log.e(“jsonFile”, “ioerror”);
}
List<String> spinnerData = new ArrayList<>();
for(int i=0;i<cityList.getCityDetail().size();i++){
spinnerData.add(cityList.getCityDetail().get(i).getName());
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerData);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Spinner ve AutoCompleteTextView ile kullanabilirsiniz uygulama son hali.
Son halini ve projenin kodlarına bakmak için Github hesabımdan bakabilirsiniz.