Merhaba Arkadaşlar,
mobilhanem.com üzerinden anlattığım ilk dersim. Bu dersimizde Android’de Google Volley Kullanımı hakkında bilgi verip gelen JSON veriyi parse etme işlemini anlatacağım.
Arkadaşlar Volley basitce anlatmak gerekirse sunucu ile bağlantı kurup data alışverişi yapmaya yarayan bir yapıdır.Geleneksel olarak kullandığımız Asynctask ile yapılan Http Request işlemini çok kolaylaştıran,karmaşık kodlar içermeyen,arka plan işlerini kendi halleden,kendi cachle’me sistemi olan ve Android’in kullanılmasını önerdiği HTTP Request sistemdir.
Daha detaylı bilgiyi için tıklayınız.
Dersin daha iyi anlaşılması için örnek bir uygulama yazdım. İndirip incelerseniz çok daha iyi anlayacağınızı düşünüyorum.Kod üzerinde açıklama yapmaya çalıştım.
[wpdm_file id=35]Burda dikkat etmemiz bir kaç husus var öncelikle onları belirteyim.
-Öncelikle internet izni vermeyi unutmayalım.
<uses-permission android:name="android.permission.INTERNET">
-Sonrasında ise volley.jar’ı projemize dahil etmeyi unutmuyoruz. Volley.jar dosyasını indirdiğiniz kaynak kod içersinde Android private Libraries altında bulabilirsiniz. Sizde aynı şekil sürükle bırakma yöntemi ile jar dosyasını projenize dahil edebilirsiniz.
-Aynı şekil indireceğiniz kaynak kod içerisinde bulunan AppController.java dosyasınıda projenizde oluşturmayı ve Manifest dosyasında application tagı altında tanımlamayı unutmayın.Bunu nasıl yaptığımızı manifest dosyasında görebilirsiniz.
Kodlama kısmına geçelim.
AndroidManifest.xml
//////// <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mobilhanem.jsonparser" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:name="com.mobilhanem.jsonparser.app.AppController" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.mobilhanem.jsonparser.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET" /> </manifest>
Burada application altındaki kısmı eklemeyi unutmayalım.
android:name="com.mobilhanem.jsonparser.app.AppController"
Uygulamamızda AppContoller.java yıda oluşturalım.
AppContoller.java
package com.mobilhanem.jsonparser.app; import android.app.Application; import android.text.TextUtils; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.toolbox.Volley; public class AppController extends Application { public static final String TAG = AppController.class.getSimpleName(); private RequestQueue mRequestQueue; private static AppController mInstance; @Override public void onCreate() { super.onCreate(); mInstance = this; } public static synchronized AppController getInstance() { return mInstance; } public RequestQueue getRequestQueue() { if (mRequestQueue == null) { mRequestQueue = Volley.newRequestQueue(getApplicationContext()); } return mRequestQueue; } // TODO adding request to queue // Request'i volley'in Q sırasına atıyoruz public <T> void addToRequestQueue(Request<T> req, String tag) { req.setTag(TextUtils.isEmpty(tag) ? TAG : tag); getRequestQueue().add(req); } // TODO adding request to queue // Request'i volley'in Q sırasına atıyoruz public <T> void addToRequestQueue(Request<T> req) { req.setTag(TAG); getRequestQueue().add(req); } // TODO cancel request from queue // Request'i volley'in Q sırasından çıkarıyoruz public void cancelPendingRequests(Object tag) { if (mRequestQueue != null) { mRequestQueue.cancelAll(tag); } } }
Yukarıdaki kodda herhangi bir değişiklik yapmadan direk kullanabilirsiniz.
MainActivity.java
/////// import java.util.HashMap; import java.util.Map; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Spinner; import android.widget.TextView; import com.android.volley.Request.Method; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import com.mobilhanem.jsonparser.app.AppController; public class MainActivity extends Activity { Spinner sp; int secilen; TextView t1, t2, t3, t4; ProgressDialog pDialog; String veri_string; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // activity_main.xml de oluşturduğumuz textview leri koda tanıtıyoruz. t1 = (TextView) findViewById(R.id.textView2); t2 = (TextView) findViewById(R.id.textView4); t3 = (TextView) findViewById(R.id.textView6); t4 = (TextView) findViewById(R.id.textView8); // activity_main.xml de oluşturduğumuz spineri koda tanıtıyoruz. sp = (Spinner) findViewById(R.id.spinner1); // Spinera Listener ekliyoruz sp.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { secilen = arg2; // spinerdan secilen değerin sonra değerini // alıyoruz. kaçıncı sırada olduqunu if (secilen != 0) { // seçilen deger ilk deger değilse yani Kişi // seçiniz yazısı değilse pDialog = new ProgressDialog(MainActivity.this); pDialog.setMessage("Kişi Bilgileri Getiriliyor..."); pDialog.setIndeterminate(true); pDialog.setCancelable(false); // ProgressDialog u iptal // edilemez // hale getirdik. pDialog.show(); getData(); } } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } public void getData() { //TODO adding request to POST method and URL //Burada issteğimizi oluşturuyoruz, method parametresi olarak post seçiyoruz ve url'imizi const'dan alıyoruz. StringRequest myReq = new StringRequest(Method.POST, Const.url, new Listener<String>() { @Override public void onResponse(String response) { // // TODO datalarımız geldi parse işlemi yapılmalı // // TODO lets parse it JSONObject veri_json; try { veri_json = new JSONObject(response);// gelen // veri_string // değerini // json // arraye // çeviriyoruz. // try içinde yapmak zorunlu çünkü çıkabilecek bir // sorunda uygulamanın patlamaması için String isim, yas, mail, adres; try { // try içinde yapmak zorunlu çünkü çıkabilecek // bir sorunda uygulamanın patlamaması için. // veri_json arrayindeki değerleri alıyoruz. isim = veri_json.getString("isim"); yas = veri_json.getString("yas"); mail = veri_json.getString("mail"); adres = veri_json.getString("adres"); // bu aldığımız değerleri textView lere // yazdırıyoruz. t1.setText(isim); t2.setText(yas); t3.setText(mail); t4.setText(adres); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } pDialog.dismiss(); // ProgresDialog u kapatıyoruz. } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO there is an error to connecting server or getting data // Server'a bağlanırken yada veri çekilirken hata oldu System.out.println(error.getMessage()); } }) { // TODO let put params to volley request // Burada göndereceğimiz request parametrelerini(birden fazla olabilir) set'liyoruz protected Map<String, String> getParams() throws com.android.volley.AuthFailureError { Map<String, String> params = new HashMap<String, String>(); //TODO seçilen kişinin id'sini kisi parametresine ekliyoruz params.put("kisi", secilen + ""); return params; }; }; myReq.setShouldCache(false); //cache kapatıyoruz. // Request(İstek)'i Volley'in Requst sırasına atıyoruz // Adding request to volley request queue AppController.getInstance().addToRequestQueue(myReq); } }
Gerekli açıklamaları kod üzerinde yapmaya çalıştım.Anlamadığınız ,eklemek istediğiniz yer olursa yorum bırakabilirsiniz.Birdahaki dersime Android’de GSON ile JSON Parse etmeyi anlatacağım.
Sizlerden ricamız facebook.com/mobilhanem sayfamızı beğenmenizdir.Birdahaki dersimize kadar kendinize iyi bakın.
0