SlideShare a Scribd company logo
1 of 11
Download to read offline
Tutorial Android : Mengakses Data Dari Database MySQL
di ListView Dengan JSON
Atmosfer kampung halaman sedikit menghilangkan pikiran saya yang sumpek beberapa hari
belakangan ini. Permasalahannya lumayan klasik dan seolah-olah ingin menjatuhkan saya. Dan
yang bikin jengkel, ketika ada yang enak malah diembat sendiri sama segelintir orang di kampus.
Padahal dalam pelaksanaannya memakai asset yang dulu pernah saya buat. Mungkin begini
rasanya ditendang dari tempat yang dulu kita bangun. Mirip-mirip dikitlah sama kisah hidupnya
mendiang om steve jobs (mudah-mudahan saja saya bisa sukses kayak beliau :ngakaks:). Pas
kebetulan di kampus sedang libur, jadilah saya pulang ke bali saja. Lumayanlah kalau sudah
emosi seperti ini, semangat saya jadi bangkit ke 100% lagi. Dan tadi siang, saya kembali lagi
berkutat dengan eclipse serta emulator android untuk mencoba-coba membuat aplikasi sederhana
untuk mengakses database online yang terdapat di web server dengan memanfaatkan JSON.
Inilah contoh penggunaan metode three tier dalam aplikasi android, cocok tuh dipakai tema
skripsi untuk yang belum punya bayangan untuk skripsinya (#haha).
Dalam three tier, untuk mengakses database di web server diperlukan sebuah file php yang akan
menjembatani aplikasi android dengan database mysql yang berada di server, dan gak
ketinggalan juga koneksi internet (yang ini kalau sudah online di internet). Hasil query dari
database, disusun sesuai dengan format JSON di dalam file php. Kemudian file php yang
menampung data tersebut dipanggil dari aplikasi android dan kemudian di-parsing untuk
selanjutnya ditampilkan ke dalam ListView. Kita langsung aja ke cara pembuatannya, cekidot….
1. Buat sebuah android project baru, detailnya seperti gambar di bawah ini :
2. Kita membutuhkan sebuah class tersendiri untuk melakukan parsing data JSON. Disini kita
akan memanfaatkan module json, Apache dan IO milik java untuk berkomunikasi dengan web
server yang pada postingan ini saya menggunakan web server apache.
view source
print?
1 public class JSONParser {
2
3 static InputStream is = null;
4 static JSONObject jObj = null;
5 static String json = "";
6
7 public JSONObject AmbilJson(String url) {
8
9 try {
10 DefaultHttpClient httpClient = new DefaultHttpClient();
11 HttpPost httpPost = new HttpPost(url);
12
13 HttpResponse httpResponse = httpClient.execute(httpPost);
14 HttpEntity httpEntity = httpResponse.getEntity();
15 is = httpEntity.getContent();
16
17 } catch (UnsupportedEncodingException e) {
18 e.printStackTrace();
19 } catch (ClientProtocolException e) {
20 e.printStackTrace();
21 } catch (IOException e) {
22 e.printStackTrace();
23 }
24
25 try {
26
BufferedReader reader = new BufferedReader(new
InputStreamReader(is, "iso-8859-1"), 8);
27 StringBuilder sb = new StringBuilder();
28 String line = null;
29 while ((line = reader.readLine()) != null) {
30 sb.append(line);
31 }
32 is.close();
33 json = sb.toString();
34 } catch (Exception e) {
35
Log.e("Buffer Error", "Error converting result " +
e.toString());
36 }
37
38 try {
39 jObj = new JSONObject(json);
40 } catch (JSONException e) {
41 Log.e("JSON Parser", "Error parsing data " + e.toString());
42 }
43
44 return jObj;
45
46 }
47 }
3. Buka file AksesServerActivity.java, dan ketikkan kode di bawah ini. File activity ini akan
memanggil class JSONParser di atas, kemudian menampung hasil parsing data ke dalam sebuah
Adapter. Hasilnya ditampilkan ke dalam sebuah ListView. Kita gunakan database yang ada di
komputer lokal alias localhost dan untuk testing bisa menggunakan browser bawaan emulator
android dengan mengetikkan alamat http://10.0.2.2.
view source
print?
1 public class AksesServerActivity extends ListActivity {
2
3
private static String link_url = "http://10.0.2.2/json-parsing/artikel-
json.php";
4
5 private static final String AR_ID = "id";
6 private static final String AR_JUDUL = "judul";
7 private static final String AR_CONTENT = "content";
8
9 JSONArray artikel = null;
10
ArrayList<HashMap<String, String>> daftar_artikel = new
ArrayList<HashMap<String, String>>();
11
12 @Override
13 public void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.main);
16
17 JSONParser jParser = new JSONParser();
18
19 JSONObject json = jParser.AmbilJson(link_url);
20
21 try {
22 artikel = json.getJSONArray("artikel");
23
24 for(int i = 0; i < artikel.length(); i++){
25 JSONObject ar = artikel.getJSONObject(i);
26
27 String id = ar.getString(AR_ID);
28 String judul = ar.getString(AR_JUDUL);
29
String content =
ar.getString(AR_CONTENT).substring(0,100)+"...(baca selengkapnya)";
30
31
HashMap<String, String> map = new HashMap<String,
String>();
32
33 map.put(AR_ID, id);
34 map.put(AR_JUDUL, judul);
35 map.put(AR_CONTENT, content);
36
37 daftar_artikel.add(map);
38 }
39 } catch (JSONException e) {
40 e.printStackTrace();
41 }
42 this.adapter_listview();
43 }
44
45 public void adapter_listview() {
46
47 ListAdapter adapter = new SimpleAdapter(this, daftar_artikel,
48 R.layout.list_item,
49 new String[] { AR_JUDUL, AR_CONTENT, AR_ID}, new int[] {
50 R.id.judul, R.id.content, R.id.kode});
51
52 setListAdapter(adapter);
53 ListView lv = getListView();
54 lv.setOnItemClickListener(new OnItemClickListener() {
55
56 @Override
57
public void onItemClick(AdapterView<?> parent, View view,int
position, long id) {
58
String kode = ((TextView)
view.findViewById(R.id.kode)).getText().toString();
59
60
Intent in = new Intent(AksesServerActivity.this,
DetailAksesServer.class);
61 in.putExtra(AR_ID, kode);
62 startActivity(in);
63
64 }
65 });
66 }
67 }
4. Ketika salah satu item di tap/sentuh (lihat di bagian OnItemClickListener), maka akan muncul
detail beritanya pada activity baru. Buat sebuah activity baru dengan nama
DetailAksesServer.java. ID berita dikirimkan ke activity kedua melalui intent, kemudian
digunakan sebagai parameter GET di file php yang bertugas untuk menampilkan hasil query
berita yang sesuai dipilih oleh user.
view source
print?
1 public class DetailAksesServer extends Activity {
2
3 private static final String AR_ID = "id";
4 JSONArray artikel = null;
5 @Override
6 public void onCreate(Bundle savedInstanceState) {
7 super.onCreate(savedInstanceState);
8 setContentView(R.layout.single_list_item);
9
10 Intent in = getIntent();
11 String kode = in.getStringExtra(AR_ID);
12
String link_url = "http://10.0.2.2/json-parsing/detail-
artikel.php?kode="+kode;
13
14 JSONParser jParser = new JSONParser();
15
16 JSONObject json = jParser.AmbilJson(link_url);
17
18 try {
19 artikel = json.getJSONArray("artikel");
20
21 for(int i = 0; i < artikel.length(); i++){
22 JSONObject ar = artikel.getJSONObject(i);
23
24 TextView judul = (TextView) findViewById(R.id.judul);
25 TextView detail = (TextView) findViewById(R.id.detail);
26 TextView isi = (TextView) findViewById(R.id.isi);
27
28 String judul_d = ar.getString("judul");
29
String detail_d = ar.getString("tanggal")+" -
"+ar.getString("waktu")+" - "+ar.getString("penulis");
30 String isi_d = ar.getString("content");
31
32 judul.setText(judul_d);
33 detail.setText(detail_d);
34 isi.setText(isi_d);
35
36 }
37 } catch (JSONException e) {
38 e.printStackTrace();
39 }
40
41 }
42 }
5. Sekarang kita lanjut ke pembuatan business process-nya alias file php-nya. Query dan syntax
php-nya cukup sederhana, hanya saja kita harus teliti ketika membuat format JSON-nya. Kalau
salah atau kurang tanda petik satu saja, maka akan gagal di-parsing oleh class JSONParser di
atas. Berhubung hosting blog saya agak error (atau saya-nya yang bego gak bisa setting :p) gak
bisa nyisipkan query mysql, maka syntaxnya saya tampilkan ke dalam gambar. Tenang aja kok,
file android dan php-nya nanti bisa di-download di akhir postingan ini .
artikel-json.php
detail-artikel.php
6. Kita juga membutuhkan file layout untuk menampilkan data hasil parsing dari activity di atas.
Disini saya membuat 3 layout yang berbeda yaitu main.xml, list_item.xml, dan
single_list_item.xml.
main.xml
view source
print?
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical">
6
7 <ListView
8 android:id="@android:id/list"
9 android:layout_width="fill_parent"
10 android:layout_height="wrap_content" />
11
12 </LinearLayout>
list_item.xml
view source
print?
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:background="#D7DEF0"
5 android:layout_height="wrap_content"
6 android:orientation="horizontal">
7 <LinearLayout
8 xmlns:android="http://schemas.android.com/apk/res/android"
9 android:layout_width="fill_parent"
10 android:layout_height="wrap_content"
11 android:layout_margin="10dp"
12 android:orientation="vertical">
13 <!-- Name Label -->
14 <TextView
15 android:id="@+id/judul"
16 android:layout_width="fill_parent"
17 android:layout_height="wrap_content"
18 android:textColor="#333333"
19 android:textSize="16sp"
20 android:textStyle="bold"
21 android:paddingBottom="2dip" />
22 <TextView
23 android:id="@+id/content"
24 android:layout_width="fill_parent"
25 android:layout_height="wrap_content"
26 android:textColor="#666666"
27 android:textSize="11sp"
28 android:paddingBottom="2dip">
29 </TextView>
30 <TextView
31 android:id="@+id/kode"
32 android:layout_width="fill_parent"
33 android:layout_height="wrap_content"
34 android:textColor="#D7DEF0"
35 android:textSize="1sp">
36 </TextView>
37 </LinearLayout>
38
39 </LinearLayout>
single_list_item.xml
view source
print?
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:orientation="vertical"
5 android:layout_width="fill_parent"
6 android:background="#D7DEF0"
7 android:padding="10dp"
8 android:layout_height="wrap_content">
9
10 <TextView android:id="@+id/judul"
11 android:layout_width="wrap_content"
12 android:layout_height="wrap_content"
13 android:textSize="20dip"
14 android:textStyle="bold"
15 android:paddingTop="10dip"
16 android:paddingBottom="5dip"
17 android:textColor="#333333"/>
18 <TextView android:id="@+id/detail"
19 android:layout_width="wrap_content"
20 android:textStyle="bold"
21 android:textSize="12dip"
22 android:paddingTop="5dip"
23 android:paddingBottom="5dip"
24 android:layout_height="wrap_content"
25 android:textColor="#999999"/>
26 <ScrollView
27 android:layout_width="fill_parent"
28 android:layout_height="fill_parent">
29
30 <TextView android:id="@+id/isi"
31 android:layout_width="wrap_content"
32 android:textSize="14dip"
33 android:layout_height="wrap_content"
34 android:textColor="#333333"/>
35
36 </ScrollView>
37 </LinearLayout>
7. Dan yang terakhir jangan lupa untuk mendaftarkan activity yang kedua di dalam file
AndroidManifest.xml. Kalau gak terdaftar, maka aplikasi akan force closed ketika kita memilih
salah satu item di ListView.
view source
print?
1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="dlmbg.pckg.akses.server"
4 android:versionCode="1"
5 android:versionName="1.0" >
6
7 <uses-sdk android:minSdkVersion="10" />
8
9 <application
10 android:icon="@drawable/ic_launcher"
11 android:label="@string/app_name" >
12 <activity
13 android:name=".AksesServerActivity"
14 android:label="Akses Database Server MySQL" >
15 <intent-filter>
16 <action android:name="android.intent.action.MAIN" />
17
18
<category android:name="android.intent.category.LAUNCHER"
/>
19 </intent-filter>
20 </activity>
21 <activity
22 android:label="Detail Artikel"
23 android:name=".DetailAksesServer" >
24 </activity>
25 </application>
26
27 <uses-permission android:name="android.permission.INTERNET" />
28 </manifest>

More Related Content

What's hot

Implementasi ajax 25 okt2012
Implementasi ajax 25 okt2012Implementasi ajax 25 okt2012
Implementasi ajax 25 okt2012Sis Sip
 
Pelatihan j query
Pelatihan j queryPelatihan j query
Pelatihan j queryoratmangun
 
Modul praktikum 3 - Android Sudaryatno
Modul praktikum 3 - Android SudaryatnoModul praktikum 3 - Android Sudaryatno
Modul praktikum 3 - Android SudaryatnoYatno Sudar
 
Belajar Android Studio Memberi Efek animasi pada Button
Belajar Android Studio Memberi Efek animasi pada ButtonBelajar Android Studio Memberi Efek animasi pada Button
Belajar Android Studio Memberi Efek animasi pada ButtonAgus Haryanto
 
Modul praktikum 2 - Android Sudaryatno
Modul praktikum 2 - Android SudaryatnoModul praktikum 2 - Android Sudaryatno
Modul praktikum 2 - Android SudaryatnoYatno Sudar
 
Modul praktikum 5 - Android Sudaryatno
Modul praktikum 5 - Android SudaryatnoModul praktikum 5 - Android Sudaryatno
Modul praktikum 5 - Android SudaryatnoYatno Sudar
 
Laporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBOLaporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBOsetyadi_s
 
Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl...
Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl...Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl...
Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl...Tobing Manuppak
 
Web Service Menggunakan Axis
Web Service Menggunakan AxisWeb Service Menggunakan Axis
Web Service Menggunakan AxisBart Simpsons
 
Belajar pemrograman berbasis web menggunakan dhtmlx 2
Belajar pemrograman berbasis web menggunakan dhtmlx 2Belajar pemrograman berbasis web menggunakan dhtmlx 2
Belajar pemrograman berbasis web menggunakan dhtmlx 2Tobing Manuppak
 
belajar neatbean
belajar neatbeanbelajar neatbean
belajar neatbeanFarul Abdi
 
Modul Javascript
Modul JavascriptModul Javascript
Modul JavascriptToha Hstr
 

What's hot (20)

Implementasi ajax 25 okt2012
Implementasi ajax 25 okt2012Implementasi ajax 25 okt2012
Implementasi ajax 25 okt2012
 
Blog 10
Blog 10Blog 10
Blog 10
 
Pelatihan j query
Pelatihan j queryPelatihan j query
Pelatihan j query
 
Modul praktikum 3 - Android Sudaryatno
Modul praktikum 3 - Android SudaryatnoModul praktikum 3 - Android Sudaryatno
Modul praktikum 3 - Android Sudaryatno
 
Belajar Android Studio Memberi Efek animasi pada Button
Belajar Android Studio Memberi Efek animasi pada ButtonBelajar Android Studio Memberi Efek animasi pada Button
Belajar Android Studio Memberi Efek animasi pada Button
 
Modul praktikum 2 - Android Sudaryatno
Modul praktikum 2 - Android SudaryatnoModul praktikum 2 - Android Sudaryatno
Modul praktikum 2 - Android Sudaryatno
 
Modul praktikum 5 - Android Sudaryatno
Modul praktikum 5 - Android SudaryatnoModul praktikum 5 - Android Sudaryatno
Modul praktikum 5 - Android Sudaryatno
 
Kelompok 7(edit)
Kelompok 7(edit)Kelompok 7(edit)
Kelompok 7(edit)
 
WEB II PHP 04
WEB II PHP 04WEB II PHP 04
WEB II PHP 04
 
WEB II PHP 03
WEB II PHP 03WEB II PHP 03
WEB II PHP 03
 
Modul mysql5
Modul mysql5Modul mysql5
Modul mysql5
 
Laporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBOLaporan Praktikum Pertemuan 1, PBO
Laporan Praktikum Pertemuan 1, PBO
 
Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl...
Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl...Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl...
Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl...
 
Web Service Menggunakan Axis
Web Service Menggunakan AxisWeb Service Menggunakan Axis
Web Service Menggunakan Axis
 
Belajar pemrograman berbasis web menggunakan dhtmlx 2
Belajar pemrograman berbasis web menggunakan dhtmlx 2Belajar pemrograman berbasis web menggunakan dhtmlx 2
Belajar pemrograman berbasis web menggunakan dhtmlx 2
 
Batching php
Batching phpBatching php
Batching php
 
belajar neatbean
belajar neatbeanbelajar neatbean
belajar neatbean
 
Fungsi php mysql
Fungsi php mysqlFungsi php mysql
Fungsi php mysql
 
Belajar Java dasar
Belajar Java dasarBelajar Java dasar
Belajar Java dasar
 
Modul Javascript
Modul JavascriptModul Javascript
Modul Javascript
 

Viewers also liked

Android development - ListView & Adapter
Android development - ListView & AdapterAndroid development - ListView & Adapter
Android development - ListView & AdapterLope Emano
 
Belajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukBelajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukAgus Haryanto
 
Belajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data MahasiswaBelajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data MahasiswaAgus Haryanto
 
ListView and Custom ListView on Android Development [Thai]
ListView and Custom ListView on Android Development [Thai]ListView and Custom ListView on Android Development [Thai]
ListView and Custom ListView on Android Development [Thai]Somkiat Khitwongwattana
 
Android development
Android developmentAndroid development
Android developmentLope Emano
 
Sistem Informasi Pelaporan Kebakaran
Sistem Informasi Pelaporan KebakaranSistem Informasi Pelaporan Kebakaran
Sistem Informasi Pelaporan KebakaranAgus Haryanto
 
Panduan Instalasi Android Studio
Panduan Instalasi Android StudioPanduan Instalasi Android Studio
Panduan Instalasi Android StudioAgus Haryanto
 
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card View
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card ViewBelajar Android Studio Material Design Penggunaan RecyclerView dan Card View
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card ViewAgus Haryanto
 
Kenalan Dengan Firebase Android
Kenalan Dengan Firebase AndroidKenalan Dengan Firebase Android
Kenalan Dengan Firebase AndroidAgus Haryanto
 
Tutorial Android Membuat Aplikasi senter Flash light
Tutorial Android Membuat Aplikasi senter Flash lightTutorial Android Membuat Aplikasi senter Flash light
Tutorial Android Membuat Aplikasi senter Flash lightAgus Haryanto
 
Android Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySqlAndroid Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySqlAgus Haryanto
 
Belajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android SederhanaBelajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android SederhanaAgus Haryanto
 

Viewers also liked (16)

Android development - ListView & Adapter
Android development - ListView & AdapterAndroid development - ListView & Adapter
Android development - ListView & Adapter
 
Belajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukBelajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog Produk
 
Belajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data MahasiswaBelajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data Mahasiswa
 
ListView and Custom ListView on Android Development [Thai]
ListView and Custom ListView on Android Development [Thai]ListView and Custom ListView on Android Development [Thai]
ListView and Custom ListView on Android Development [Thai]
 
Android development
Android developmentAndroid development
Android development
 
Sistem Informasi Pelaporan Kebakaran
Sistem Informasi Pelaporan KebakaranSistem Informasi Pelaporan Kebakaran
Sistem Informasi Pelaporan Kebakaran
 
Panduan Instalasi Android Studio
Panduan Instalasi Android StudioPanduan Instalasi Android Studio
Panduan Instalasi Android Studio
 
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card View
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card ViewBelajar Android Studio Material Design Penggunaan RecyclerView dan Card View
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card View
 
Kenalan Dengan Firebase Android
Kenalan Dengan Firebase AndroidKenalan Dengan Firebase Android
Kenalan Dengan Firebase Android
 
Tutorial Android Membuat Aplikasi senter Flash light
Tutorial Android Membuat Aplikasi senter Flash lightTutorial Android Membuat Aplikasi senter Flash light
Tutorial Android Membuat Aplikasi senter Flash light
 
Android Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySqlAndroid Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySql
 
Gcm tutorial
Gcm tutorialGcm tutorial
Gcm tutorial
 
Java project-presentation
Java project-presentationJava project-presentation
Java project-presentation
 
Jsp Introduction Tutorial
Jsp Introduction TutorialJsp Introduction Tutorial
Jsp Introduction Tutorial
 
Belajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android SederhanaBelajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android Sederhana
 
Android presentation slide
Android presentation slideAndroid presentation slide
Android presentation slide
 

Similar to Tutorial Android JSON

Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLitecreatorb dev
 
Octav android mysql
Octav android mysqlOctav android mysql
Octav android mysqlrikysp
 
Jquery Ajax Part 1 by Yussan
Jquery Ajax Part 1 by YussanJquery Ajax Part 1 by Yussan
Jquery Ajax Part 1 by YussanYusuf A.H.
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)Debby Ummul
 
TM-4-5-6 SQLite Database.pptx
TM-4-5-6 SQLite Database.pptxTM-4-5-6 SQLite Database.pptx
TM-4-5-6 SQLite Database.pptxAdityaWahyuR2
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Melina Krisnawati
 
Tutorial lanjutan java netbeans 8 : Create Read Update Delete
Tutorial lanjutan java netbeans 8 : Create Read Update DeleteTutorial lanjutan java netbeans 8 : Create Read Update Delete
Tutorial lanjutan java netbeans 8 : Create Read Update DeleteSMK Negeri 6 Malang
 
JavaScript Standard Library.pdf
JavaScript Standard Library.pdfJavaScript Standard Library.pdf
JavaScript Standard Library.pdfPutri Sari
 
My sql python_cherrypy
My sql python_cherrypyMy sql python_cherrypy
My sql python_cherrypyAGus Msln
 
Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13Ekha Cahya Nugraha
 
Mengenal fungsi php untuk pengambilan data my sql: mysql fetch
Mengenal fungsi php untuk pengambilan data my sql: mysql fetchMengenal fungsi php untuk pengambilan data my sql: mysql fetch
Mengenal fungsi php untuk pengambilan data my sql: mysql fetchAchmad Solichin
 
Tugas modul fungsi
Tugas modul fungsiTugas modul fungsi
Tugas modul fungsiFajar Umam
 

Similar to Tutorial Android JSON (20)

Fungsi-Fungsi PHP
Fungsi-Fungsi PHPFungsi-Fungsi PHP
Fungsi-Fungsi PHP
 
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
 
Bab8.array
Bab8.array Bab8.array
Bab8.array
 
Octav android mysql
Octav android mysqlOctav android mysql
Octav android mysql
 
Jquery Ajax Part 1 by Yussan
Jquery Ajax Part 1 by YussanJquery Ajax Part 1 by Yussan
Jquery Ajax Part 1 by Yussan
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.11)
 
TM-4-5-6 SQLite Database.pptx
TM-4-5-6 SQLite Database.pptxTM-4-5-6 SQLite Database.pptx
TM-4-5-6 SQLite Database.pptx
 
Bab8.array
Bab8.array Bab8.array
Bab8.array
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
 
Tutorial lanjutan java netbeans 8 : Create Read Update Delete
Tutorial lanjutan java netbeans 8 : Create Read Update DeleteTutorial lanjutan java netbeans 8 : Create Read Update Delete
Tutorial lanjutan java netbeans 8 : Create Read Update Delete
 
JavaScript Standard Library.pdf
JavaScript Standard Library.pdfJavaScript Standard Library.pdf
JavaScript Standard Library.pdf
 
Ii java input ouput
Ii   java input ouputIi   java input ouput
Ii java input ouput
 
Modul 3 pbo(1)
Modul 3 pbo(1)Modul 3 pbo(1)
Modul 3 pbo(1)
 
My sql python_cherrypy
My sql python_cherrypyMy sql python_cherrypy
My sql python_cherrypy
 
Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13
 
Mengenal fungsi php untuk pengambilan data my sql: mysql fetch
Mengenal fungsi php untuk pengambilan data my sql: mysql fetchMengenal fungsi php untuk pengambilan data my sql: mysql fetch
Mengenal fungsi php untuk pengambilan data my sql: mysql fetch
 
Pertemuan V
Pertemuan VPertemuan V
Pertemuan V
 
Tugas modul fungsi
Tugas modul fungsiTugas modul fungsi
Tugas modul fungsi
 
4 Adt
4 Adt4 Adt
4 Adt
 
16406 pertemuan17(konsep basis-data-di-web)
16406 pertemuan17(konsep basis-data-di-web)16406 pertemuan17(konsep basis-data-di-web)
16406 pertemuan17(konsep basis-data-di-web)
 

Tutorial Android JSON

  • 1. Tutorial Android : Mengakses Data Dari Database MySQL di ListView Dengan JSON Atmosfer kampung halaman sedikit menghilangkan pikiran saya yang sumpek beberapa hari belakangan ini. Permasalahannya lumayan klasik dan seolah-olah ingin menjatuhkan saya. Dan yang bikin jengkel, ketika ada yang enak malah diembat sendiri sama segelintir orang di kampus. Padahal dalam pelaksanaannya memakai asset yang dulu pernah saya buat. Mungkin begini rasanya ditendang dari tempat yang dulu kita bangun. Mirip-mirip dikitlah sama kisah hidupnya mendiang om steve jobs (mudah-mudahan saja saya bisa sukses kayak beliau :ngakaks:). Pas kebetulan di kampus sedang libur, jadilah saya pulang ke bali saja. Lumayanlah kalau sudah emosi seperti ini, semangat saya jadi bangkit ke 100% lagi. Dan tadi siang, saya kembali lagi berkutat dengan eclipse serta emulator android untuk mencoba-coba membuat aplikasi sederhana untuk mengakses database online yang terdapat di web server dengan memanfaatkan JSON. Inilah contoh penggunaan metode three tier dalam aplikasi android, cocok tuh dipakai tema skripsi untuk yang belum punya bayangan untuk skripsinya (#haha). Dalam three tier, untuk mengakses database di web server diperlukan sebuah file php yang akan menjembatani aplikasi android dengan database mysql yang berada di server, dan gak ketinggalan juga koneksi internet (yang ini kalau sudah online di internet). Hasil query dari database, disusun sesuai dengan format JSON di dalam file php. Kemudian file php yang menampung data tersebut dipanggil dari aplikasi android dan kemudian di-parsing untuk selanjutnya ditampilkan ke dalam ListView. Kita langsung aja ke cara pembuatannya, cekidot…. 1. Buat sebuah android project baru, detailnya seperti gambar di bawah ini :
  • 2. 2. Kita membutuhkan sebuah class tersendiri untuk melakukan parsing data JSON. Disini kita akan memanfaatkan module json, Apache dan IO milik java untuk berkomunikasi dengan web server yang pada postingan ini saya menggunakan web server apache. view source print? 1 public class JSONParser { 2 3 static InputStream is = null; 4 static JSONObject jObj = null; 5 static String json = ""; 6 7 public JSONObject AmbilJson(String url) { 8 9 try { 10 DefaultHttpClient httpClient = new DefaultHttpClient(); 11 HttpPost httpPost = new HttpPost(url);
  • 3. 12 13 HttpResponse httpResponse = httpClient.execute(httpPost); 14 HttpEntity httpEntity = httpResponse.getEntity(); 15 is = httpEntity.getContent(); 16 17 } catch (UnsupportedEncodingException e) { 18 e.printStackTrace(); 19 } catch (ClientProtocolException e) { 20 e.printStackTrace(); 21 } catch (IOException e) { 22 e.printStackTrace(); 23 } 24 25 try { 26 BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 27 StringBuilder sb = new StringBuilder(); 28 String line = null; 29 while ((line = reader.readLine()) != null) { 30 sb.append(line); 31 } 32 is.close(); 33 json = sb.toString(); 34 } catch (Exception e) { 35 Log.e("Buffer Error", "Error converting result " + e.toString()); 36 } 37 38 try { 39 jObj = new JSONObject(json); 40 } catch (JSONException e) { 41 Log.e("JSON Parser", "Error parsing data " + e.toString()); 42 } 43 44 return jObj; 45 46 } 47 } 3. Buka file AksesServerActivity.java, dan ketikkan kode di bawah ini. File activity ini akan memanggil class JSONParser di atas, kemudian menampung hasil parsing data ke dalam sebuah Adapter. Hasilnya ditampilkan ke dalam sebuah ListView. Kita gunakan database yang ada di
  • 4. komputer lokal alias localhost dan untuk testing bisa menggunakan browser bawaan emulator android dengan mengetikkan alamat http://10.0.2.2. view source print? 1 public class AksesServerActivity extends ListActivity { 2 3 private static String link_url = "http://10.0.2.2/json-parsing/artikel- json.php"; 4 5 private static final String AR_ID = "id"; 6 private static final String AR_JUDUL = "judul"; 7 private static final String AR_CONTENT = "content"; 8 9 JSONArray artikel = null; 10 ArrayList<HashMap<String, String>> daftar_artikel = new ArrayList<HashMap<String, String>>(); 11 12 @Override 13 public void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 setContentView(R.layout.main); 16 17 JSONParser jParser = new JSONParser(); 18 19 JSONObject json = jParser.AmbilJson(link_url); 20 21 try { 22 artikel = json.getJSONArray("artikel"); 23 24 for(int i = 0; i < artikel.length(); i++){ 25 JSONObject ar = artikel.getJSONObject(i); 26 27 String id = ar.getString(AR_ID); 28 String judul = ar.getString(AR_JUDUL); 29 String content = ar.getString(AR_CONTENT).substring(0,100)+"...(baca selengkapnya)"; 30 31 HashMap<String, String> map = new HashMap<String, String>();
  • 5. 32 33 map.put(AR_ID, id); 34 map.put(AR_JUDUL, judul); 35 map.put(AR_CONTENT, content); 36 37 daftar_artikel.add(map); 38 } 39 } catch (JSONException e) { 40 e.printStackTrace(); 41 } 42 this.adapter_listview(); 43 } 44 45 public void adapter_listview() { 46 47 ListAdapter adapter = new SimpleAdapter(this, daftar_artikel, 48 R.layout.list_item, 49 new String[] { AR_JUDUL, AR_CONTENT, AR_ID}, new int[] { 50 R.id.judul, R.id.content, R.id.kode}); 51 52 setListAdapter(adapter); 53 ListView lv = getListView(); 54 lv.setOnItemClickListener(new OnItemClickListener() { 55 56 @Override 57 public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 58 String kode = ((TextView) view.findViewById(R.id.kode)).getText().toString(); 59 60 Intent in = new Intent(AksesServerActivity.this, DetailAksesServer.class); 61 in.putExtra(AR_ID, kode); 62 startActivity(in); 63 64 } 65 }); 66 } 67 } 4. Ketika salah satu item di tap/sentuh (lihat di bagian OnItemClickListener), maka akan muncul detail beritanya pada activity baru. Buat sebuah activity baru dengan nama
  • 6. DetailAksesServer.java. ID berita dikirimkan ke activity kedua melalui intent, kemudian digunakan sebagai parameter GET di file php yang bertugas untuk menampilkan hasil query berita yang sesuai dipilih oleh user. view source print? 1 public class DetailAksesServer extends Activity { 2 3 private static final String AR_ID = "id"; 4 JSONArray artikel = null; 5 @Override 6 public void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.single_list_item); 9 10 Intent in = getIntent(); 11 String kode = in.getStringExtra(AR_ID); 12 String link_url = "http://10.0.2.2/json-parsing/detail- artikel.php?kode="+kode; 13 14 JSONParser jParser = new JSONParser(); 15 16 JSONObject json = jParser.AmbilJson(link_url); 17 18 try { 19 artikel = json.getJSONArray("artikel"); 20 21 for(int i = 0; i < artikel.length(); i++){ 22 JSONObject ar = artikel.getJSONObject(i); 23 24 TextView judul = (TextView) findViewById(R.id.judul); 25 TextView detail = (TextView) findViewById(R.id.detail); 26 TextView isi = (TextView) findViewById(R.id.isi); 27 28 String judul_d = ar.getString("judul"); 29 String detail_d = ar.getString("tanggal")+" - "+ar.getString("waktu")+" - "+ar.getString("penulis"); 30 String isi_d = ar.getString("content"); 31 32 judul.setText(judul_d);
  • 7. 33 detail.setText(detail_d); 34 isi.setText(isi_d); 35 36 } 37 } catch (JSONException e) { 38 e.printStackTrace(); 39 } 40 41 } 42 } 5. Sekarang kita lanjut ke pembuatan business process-nya alias file php-nya. Query dan syntax php-nya cukup sederhana, hanya saja kita harus teliti ketika membuat format JSON-nya. Kalau salah atau kurang tanda petik satu saja, maka akan gagal di-parsing oleh class JSONParser di atas. Berhubung hosting blog saya agak error (atau saya-nya yang bego gak bisa setting :p) gak bisa nyisipkan query mysql, maka syntaxnya saya tampilkan ke dalam gambar. Tenang aja kok, file android dan php-nya nanti bisa di-download di akhir postingan ini . artikel-json.php detail-artikel.php
  • 8. 6. Kita juga membutuhkan file layout untuk menampilkan data hasil parsing dari activity di atas. Disini saya membuat 3 layout yang berbeda yaitu main.xml, list_item.xml, dan single_list_item.xml. main.xml view source print? 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical"> 6 7 <ListView 8 android:id="@android:id/list" 9 android:layout_width="fill_parent" 10 android:layout_height="wrap_content" /> 11 12 </LinearLayout> list_item.xml view source
  • 9. print? 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:background="#D7DEF0" 5 android:layout_height="wrap_content" 6 android:orientation="horizontal"> 7 <LinearLayout 8 xmlns:android="http://schemas.android.com/apk/res/android" 9 android:layout_width="fill_parent" 10 android:layout_height="wrap_content" 11 android:layout_margin="10dp" 12 android:orientation="vertical"> 13 <!-- Name Label --> 14 <TextView 15 android:id="@+id/judul" 16 android:layout_width="fill_parent" 17 android:layout_height="wrap_content" 18 android:textColor="#333333" 19 android:textSize="16sp" 20 android:textStyle="bold" 21 android:paddingBottom="2dip" /> 22 <TextView 23 android:id="@+id/content" 24 android:layout_width="fill_parent" 25 android:layout_height="wrap_content" 26 android:textColor="#666666" 27 android:textSize="11sp" 28 android:paddingBottom="2dip"> 29 </TextView> 30 <TextView 31 android:id="@+id/kode" 32 android:layout_width="fill_parent" 33 android:layout_height="wrap_content" 34 android:textColor="#D7DEF0" 35 android:textSize="1sp"> 36 </TextView> 37 </LinearLayout> 38 39 </LinearLayout> single_list_item.xml
  • 10. view source print? 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:orientation="vertical" 5 android:layout_width="fill_parent" 6 android:background="#D7DEF0" 7 android:padding="10dp" 8 android:layout_height="wrap_content"> 9 10 <TextView android:id="@+id/judul" 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 android:textSize="20dip" 14 android:textStyle="bold" 15 android:paddingTop="10dip" 16 android:paddingBottom="5dip" 17 android:textColor="#333333"/> 18 <TextView android:id="@+id/detail" 19 android:layout_width="wrap_content" 20 android:textStyle="bold" 21 android:textSize="12dip" 22 android:paddingTop="5dip" 23 android:paddingBottom="5dip" 24 android:layout_height="wrap_content" 25 android:textColor="#999999"/> 26 <ScrollView 27 android:layout_width="fill_parent" 28 android:layout_height="fill_parent"> 29 30 <TextView android:id="@+id/isi" 31 android:layout_width="wrap_content" 32 android:textSize="14dip" 33 android:layout_height="wrap_content" 34 android:textColor="#333333"/> 35 36 </ScrollView> 37 </LinearLayout>
  • 11. 7. Dan yang terakhir jangan lupa untuk mendaftarkan activity yang kedua di dalam file AndroidManifest.xml. Kalau gak terdaftar, maka aplikasi akan force closed ketika kita memilih salah satu item di ListView. view source print? 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="dlmbg.pckg.akses.server" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk android:minSdkVersion="10" /> 8 9 <application 10 android:icon="@drawable/ic_launcher" 11 android:label="@string/app_name" > 12 <activity 13 android:name=".AksesServerActivity" 14 android:label="Akses Database Server MySQL" > 15 <intent-filter> 16 <action android:name="android.intent.action.MAIN" /> 17 18 <category android:name="android.intent.category.LAUNCHER" /> 19 </intent-filter> 20 </activity> 21 <activity 22 android:label="Detail Artikel" 23 android:name=".DetailAksesServer" > 24 </activity> 25 </application> 26 27 <uses-permission android:name="android.permission.INTERNET" /> 28 </manifest>