Haz 29

AsynTask içerisinde ProgressDialog Kullanımı

loading

AsyncTask işlemin gerçekleşmesi için belli bir süreç gereken işlemlerde kullanılmaktadır. Örneğin internetten veri çekme, veri gönderme veya json parse etme gibi… Bu gibi işlemlerde işlemin gerçekleşmesi internet hızına ve çeşitli çevresel faktörlere bağlıdır. Bu gibi durumlarda kullanabileceğiniz progressdialog’dan bahsettim yazımda. Ayrıca aşağıdaki örnekte get ile dönen JSON listesinin (örneğin iller listesi) nasıl parse edilip spinner içerisinde gösterileceğini görebilirsiniz.

public class getil extends AsyncTask<String, Void, Void> {
    String eleman="b";
    List<String> liste = new ArrayList<String>();
    private ProgressDialog dialog; //Tanımlandı

    public getil(KayitOl activity) {//Yapılandırıcı ile yeni bir dialog oluştur//uldu.
        dialog = new ProgressDialog(activity);
    }

    @Override
    protected Void doInBackground(String... params) {
        try {
            URL json = new URL("get method url");
            URLConnection jc = json.openConnection();
            BufferedReader reader = new BufferedReader(new InputStreamReader(jc.getInputStream()));
            String line = reader.readLine();
            JSONArray jsonDizi=new JSONArray(line);
            for (int i = 0; i < jsonDizi.length(); i++) {
                JSONObject c = jsonDizi.getJSONObject(i);
                eleman=c.getString("City");
                liste.add(eleman);
            }
            reader.close();
        } catch(Exception e){
            Log.d("Hata : ", e.getMessage());
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        //AsyncTask bittiğinde eleman bos mu dolu mu ?
        Log.d("İşlem : "," tamamlandı.");
        il=(Spinner)findViewById(R.id.illistesi);
        ArrayAdapter<String> data = new ArrayAdapter<String>(getApplication(),
                android.R.layout.simple_spinner_item, liste);
        data.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        il.setAdapter(data);
//Dialog gösteriliyor ise kapat.
        if (dialog.isShowing()) {
            dialog.dismiss();
        }

    }
    @Override
    protected void onPreExecute() {
//Dialog mesajı ayarlar ve göster.
        dialog.setMessage("Yükleniyor...");
        dialog.show();
    }
    @Override
    protected void onProgressUpdate(Void... values) {
    }

}

Bir Cevap Yazın