volley json data alırken senkron sorunu
Merhaba,
GenelService.java diye bir class var(web servise bağlanıp json formatında veriler çektim tüm metodlarım bu class içinde) ve içerisinde seçilen şehiri parametre olarak gönderip ilçe listesini getirdiğim bir metodum var, bu metod geriye bir List<IlceModel> tipinde bir liste döndürmektedir, bu listeyi activity içerisinde bir değişkene atayıp kullanıyorum, fakat web servisten veriler çekilirken bu işlemin birmesi beklenmeden sıradaki diğer işleme geçtiği için sorun yaşamaktayım, web servis isteği tamamlandığı zaman sıradaki işleme geçilmesini nasıl sağlayabilirim?
[code]
//activity içerisindeki ilçeleri çağırdığım metod
public void IlceDoldur(int sehirId){
final List<IlceModel> ilceler = GenelService.GetIlceList(context,sehirId); //bu satırdaki istek bitmeden bir sonraki satıra geçmeyi nasıl engellerim
Spinner sp = (Spinner) findViewById(R.id.spIlce);
ArrayAdapter<IlceModel> adapter = new ArrayAdapter<IlceModel>(this, android.R.layout.simple_spinner_dropdown_item, ilceler );
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(adapter);
}
//web servisden veri çektiğim metod
public static List<IlceModel> GetIlceList(final Context context,int sehirId) {
final ArrayList<IlceModel> data = new ArrayList<IlceModel>();
data.add(new IlceModel(0,"ilçe seçiniz"));
if(sehirId==0)
return data;
pd = ProgressDialog.show(context, null, "İlçe listesi alınıyor, lütfen bekleyiniz...");
//pd.setCancelable(true);
String prm = "?sehirId=" + sehirId;
String url = serviceUrl + "/genel/GetIlceler" + prm;
RequestQueue q = Volley.newRequestQueue(context);
JsonObjectRequest rq = new JsonObjectRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
pd.hide();
Gson gson = new Gson();
try {
if (!response.getBoolean("Sonuc")) {
Toast.makeText(context, response.getString("Mesaj").toString(), Toast.LENGTH_LONG).show();
return;
}
Type listType = new TypeToken<List<IlceModel>>(){}.getType();
List<IlceModel> items= (List<IlceModel>) gson.fromJson(response.getJSONArray("Data").toString(), listType);
data.addAll(items);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pd.hide();
Toast.makeText(context, error.toString(), Toast.LENGTH_LONG).show();
}
});
q.add(rq);
return data;
}
[/code]