adv

Kamis, 07 Juni 2012

[Programming] Simple JSON Android Tutorial

[Programming] Simple JSON Android Tutorial – hai guys, tutorial kali ini akan membahas tentang penggunaan json di android. Seperti anda ketahui JSON merupakan salah satu cara yang biasa digunakan untuk pertukaran data. Contoh website yang menggunakan JSON yakni twitter, jika anda sudah biasa menggunakan API twitter maka anda tidak akan asing dengan yang namanya JSON.
Untuk mengolah data melalui JSON saya membiasakan menggunakan kelas tersendiri, dikarenakan bisa digunakan untuk lain waktu. Contoh kelas untuk mengolah data dari json seperti berikut :
01/*
02 * PratamaWijaya.com
03 * JSONparser.java
04 */
05 
06package id.jay.emrs.service;
07 
08import java.io.BufferedReader;
09import java.io.IOException;
10import java.io.InputStream;
11import java.io.InputStreamReader;
12import java.io.UnsupportedEncodingException;
13import org.apache.http.HttpEntity;
14import org.apache.http.HttpResponse;
15import org.apache.http.client.ClientProtocolException;
16import org.apache.http.client.methods.HttpPost;
17import org.apache.http.impl.client.DefaultHttpClient;
18import org.json.JSONException;
19import org.json.JSONObject;
20 
21import android.util.Log;
22 
23public class JSONparser {
24    static InputStream is = null;
25    static JSONObject jObj = null;
26    static String json = "";
27 
28    public JSONparser() {
29 
30    }
31 
32    public JSONObject getJSONFromUrl(String url) {
33        // http request
34        try {
35 
36            DefaultHttpClient httpClient = new DefaultHttpClient();
37            HttpPost httpPost = new HttpPost(url);
38 
39            HttpResponse httpResponse = httpClient.execute(httpPost);
40            HttpEntity httpEntity = httpResponse.getEntity();
41            is = httpEntity.getContent();
42 
43        } catch (UnsupportedEncodingException e) {
44            // TODO: handle exception
45            e.printStackTrace();
46        } catch (ClientProtocolException e) {
47            // TODO: handle exception
48            e.printStackTrace();
49        } catch (IOException e) {
50            // TODO: handle exception
51            e.printStackTrace();
52        }
53 
54        try {
55            BufferedReader reader = new BufferedReader(new InputStreamReader(
56                    is, "iso-8859-1"), 8);
57            StringBuilder sb = new StringBuilder();
58            String line = null;
59 
60            while ((line = reader.readLine()) != null) {
61                sb.append(line + "\n");
62            }
63 
64            is.close();
65            json = sb.toString();
66 
67        } catch (Exception e) {
68            // TODO: handle exception
69            Log.e("BUffer Error", "Error converting result" + e.toString());
70        }
71 
72        // try parse string to a json
73        try {
74            jObj = new JSONObject(json);
75        } catch (JSONException e) {
76            // TODO: handle exception
77            Log.e("Json parser", "error parsing data" + e.toString());
78        }
79 
80        return jObj;
81 
82    }
83 
84}

simpan dengan nama JSONparser.java


Untuk mengelola json kita membutuhkan httpClient dan HttpResponse, untuk method yang digunakan dapat menggunakan method get maupun post, pada contoh diatas menggunakan method POST. untuk data jsonnya saya menggunakan sample sebagai berikut :
01{
02    "data":[
03        {
04            "nama" : "Pratama",
05            "email" : "admin@pratamawijaya.com"
06        },
07        {
08            "nama" : "emrs",
09            "email" : "emrs@pratamawijaya.com"
10        },
11        {
12            "nama" : "jay",
13            "email" : "jay@pratamawijaya.com"
14        }
15 
16    ]
17}
simpan menjadi contact.php
untuk MainActivitynya sebagai berikut :
01package id.jay.emr.jsontutorial;
02 
03import java.util.ArrayList;
04import java.util.HashMap;
05 
06import id.jay.emrs.service.JSONparser;
07 
08import org.json.JSONArray;
09import org.json.JSONException;
10import org.json.JSONObject;
11 
12import android.app.ListActivity;
13import android.os.Bundle;
14import android.widget.ListAdapter;
15import android.widget.SimpleAdapter;
16 
17public class MainActivity extends ListActivity {
18    /** Called when the activity is first created. */
19 
20    private static String URL = "http://10.0.2.2/pm/contact.php";
21 
22    // tag
23    private String TAG_DATA = "data";
24    private String TAG_NAMA = "nama";
25    private String TAG_EMAIL = "email";
26 
27    JSONArray contacts = null;
28 
29    // panggil class parser
30    JSONparser parser = new JSONparser();
31 
32    @Override
33    public void onCreate(Bundle savedInstanceState) {
34        super.onCreate(savedInstanceState);
35        setContentView(R.layout.main);
36 
37        ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
38 
39        JSONObject json = parser.getJSONFromUrl(URL);
40        try {
41            contacts = json.getJSONArray(TAG_DATA);
42 
43            for (int i = 0; i < contacts.length(); i++) {
44                JSONObject data = contacts.getJSONObject(i);
45 
46                String nama = data.getString(TAG_NAMA);
47                String email = data.getString(TAG_EMAIL);
48 
49                HashMap<String, String> map = new HashMap<String, String>();
50                map.put(TAG_NAMA, nama);
51                map.put(TAG_EMAIL, email);
52 
53                contactList.add(map);
54            }
55        } catch (JSONException e) {
56            // TODO: handle exception
57            e.printStackTrace();
58        }
59 
60        // tampilkan ke listadapter
61        ListAdapter adapter = new SimpleAdapter(this, contactList,
62                R.layout.list_data, new String[] { TAG_NAMA, TAG_EMAIL },
63                new int[] { R.id.nama, R.id.email });
64        setListAdapter(adapter);
65    }
66}
untuk URL nya saya ganti menjadi http://10.0.2.2/pm/contact.php yakni lokasi file contact.php , 10.0.2.2 adalah ip untuk localhost komputer anda jika diakses melalui android emulator. Kemudian rubah file main.xml menjadi seperti ini :
01<?xml version="1.0" encoding="utf-8"?>
02<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03    android:layout_width="fill_parent"
04    android:layout_height="fill_parent"
05    android:orientation="vertical" >
06    <ListView
07        android:id="@android:id/list"
08        android:layout_width="fill_parent"
09        android:layout_height="wrap_content"
10        >
11    </ListView>
12</LinearLayout>
kemudian buat lagi sebuah file xml dengan nama list_data.xml dan isi dengan code berikut :
01<?xml version="1.0" encoding="utf-8"?>
02<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03    android:layout_width="match_parent"
04    android:layout_height="match_parent"
05    android:orientation="vertical" >
06    <TextView
07        android:id="@+id/nama"
08        android:layout_width="fill_parent"
09        android:layout_height="wrap_content"
10        android:textSize="30dp" />
11    <TextView
12        android:id="@+id/email"
13        android:layout_width="fill_parent"
14        android:layout_height="wrap_content" />
15</LinearLayout>
dan jangan lupa untuk menambahkan permission INTERNET pada file manifestnya
01<?xml version="1.0" encoding="utf-8"?>
02<manifest xmlns:android="http://schemas.android.com/apk/res/android"
03    package="id.jay.emr.jsontutorial"
04    android:versionCode="1"
05    android:versionName="1.0" >
06    <uses-sdk android:minSdkVersion="8" />
07    <uses-permission android:name="android.permission.INTERNET" />
08    <application
09        android:icon="@drawable/ic_launcher"
10        android:label="@string/app_name" >
11        <activity
12            android:name=".MainActivity"
13            android:label="@string/app_name" >
14            <intent-filter>
15                <action android:name="android.intent.action.MAIN" />
16                <category android:name="android.intent.category.LAUNCHER" />
17            </intent-filter>
18        </activity>
19    </application>
20</manifest>
jika anda menjalankannya maka tampilannya akan seperti ini :
simple android json tutorial 650x542 [Programming] Simple JSON Android Tutorial
simple android json tutorial
Untuk pembelajaran anda dapat mendownload source codenya dengan link dibawah ini…
Download Source Code Simple Android JSON Tutorial

Tidak ada komentar:

Posting Komentar