Kali ini
saya akan berbagi cara membuat program Input dan select menggunakan JSON. Jika tertarik
silahkan ikuti langkah-langkah sebagai berikut
Langkah awal kita buat database terlebih dahulu, seperti berikut :
Kedua buat Layout seperti gambar dibawah ini (main.xml):
Untuk source code main.xml :
Ketiga tulis source code pada class Activity (Praktek_jsonActivity.java) sebagai berikut :
package arumjiyu.net;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Praktek_jsonActivity extends Activity {
/** Called when the activity is first created. */
EditText etnim, etnama, etalamat;
Button Simpan;
private String url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etnim = (EditText) findViewById(R.id.txtnim);
etnama = (EditText) findViewById(R.id.txtnama);
etalamat = (EditText) findViewById(R.id.txtalamat);
Button btnSimpan = (Button) findViewById(R.id.btnadd);
btnSimpan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
url = "";
// karena saya menggunakan Genymotion sebagai emulator jadi IP address =
// 10.0.3.2 namun jika kawan kawan menggunakan emulator bawaan eclipse
// silahkan gunakan IP Address 10.0.2.2
url = "http://10.0.3.2/json/addmhs.php";
try {
String nim = URLEncoder.encode(etnim.getText().toString(),
"utf-8");
String nama = URLEncoder.encode(
etnama.getText().toString(), "utf-8");
String alamat = URLEncoder.encode(etalamat.getText()
.toString(), "utf-8");
url += "?nim=" + nim + "&nama=" + nama + "&alamat="
+ alamat;
getRequest(url);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
});
}
public void getRequest(String url) {
Toast.makeText(this, url, Toast.LENGTH_LONG).show();
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
try {
HttpResponse response = client.execute(request);
Toast.makeText(this, "Tambah data " + request(response) + " ",
Toast.LENGTH_SHORT).show();
} catch (Exception ex) {
Toast.makeText(this, "data gagal", Toast.LENGTH_SHORT).show();
}
}
public static String request(HttpResponse reponse) {
String result = "";
try {
InputStream in = reponse.getEntity().getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
str.append(line + "\n");
}
in.close();
result = str.toString();
} catch (Exception e) {
result = "Error";
}
return result;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu1:
Toast.makeText(this, "View Data", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, ViewAct.class);
startActivity(intent);
break;
case R.id.menu2:
Toast.makeText(this, "Input Data", Toast.LENGTH_SHORT).show();
Intent intent2 = new Intent(this, Praktek_jsonActivity.class);
startActivity(intent2);
break;
}
return true;
}
}
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Praktek_jsonActivity extends Activity {
/** Called when the activity is first created. */
EditText etnim, etnama, etalamat;
Button Simpan;
private String url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etnim = (EditText) findViewById(R.id.txtnim);
etnama = (EditText) findViewById(R.id.txtnama);
etalamat = (EditText) findViewById(R.id.txtalamat);
Button btnSimpan = (Button) findViewById(R.id.btnadd);
btnSimpan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
url = "";
// karena saya menggunakan Genymotion sebagai emulator jadi IP address =
// 10.0.3.2 namun jika kawan kawan menggunakan emulator bawaan eclipse
// silahkan gunakan IP Address 10.0.2.2
url = "http://10.0.3.2/json/addmhs.php";
try {
String nim = URLEncoder.encode(etnim.getText().toString(),
"utf-8");
String nama = URLEncoder.encode(
etnama.getText().toString(), "utf-8");
String alamat = URLEncoder.encode(etalamat.getText()
.toString(), "utf-8");
url += "?nim=" + nim + "&nama=" + nama + "&alamat="
+ alamat;
getRequest(url);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
});
}
public void getRequest(String url) {
Toast.makeText(this, url, Toast.LENGTH_LONG).show();
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
try {
HttpResponse response = client.execute(request);
Toast.makeText(this, "Tambah data " + request(response) + " ",
Toast.LENGTH_SHORT).show();
} catch (Exception ex) {
Toast.makeText(this, "data gagal", Toast.LENGTH_SHORT).show();
}
}
public static String request(HttpResponse reponse) {
String result = "";
try {
InputStream in = reponse.getEntity().getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
str.append(line + "\n");
}
in.close();
result = str.toString();
} catch (Exception e) {
result = "Error";
}
return result;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu1:
Toast.makeText(this, "View Data", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, ViewAct.class);
startActivity(intent);
break;
case R.id.menu2:
Toast.makeText(this, "Input Data", Toast.LENGTH_SHORT).show();
Intent intent2 = new Intent(this, Praktek_jsonActivity.class);
startActivity(intent2);
break;
}
return true;
}
}
Keempat, buat Class Object baru saya berinama JSONParser.java cara membuat class Object baru : File >> New >> Class >> Name : JSONParser | Superclass : java.lang.Object | hilangkan centang pada “inherited abstract methods” >> Create, kemudian ketikkan script dibawa ini :
package arumjiyu.net;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
public JSONObject AmbilJson(String url) {
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
return jObj;
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
public JSONObject AmbilJson(String url) {
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
return jObj;
}
}
Kelima buat 2(dua) Class Activity baru, disini saya berinama ViewAct.java dan DetailAkses.java, tulis masing-masing source code (note : bila menemukan error biarkan saja dulu selesaikan langkah-langkahnya, bila ada yang membutuhkan import silahkan diimport selain butuh import biarkan saja karena proses belum selesai )
ViewAct.java
package arumjiyu.net;
import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import
android.widget.AdapterView.OnItemClickListener;
public class ViewAct extends ListActivity {
// karena saya
menggunakan Genymotion sebagai emulator jadi IP
address =
// 10.0.3.2 namun
jika kawan kawan menggunakan emulator bawaan
eclipse
// silahkan
gunakan IP Address 10.0.2.2
private static String link_url = "http://10.0.3.2/json/data.php";
private static final String AR_NIM = "nim";
private static final String AR_Nama = "nama";
JSONArray data = null;
ArrayList<HashMap<String,
String>> daftar = new ArrayList<HashMap<String,
String>>();
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hal_view);
JSONParser jParser = new JSONParser();
JSONObject json =
jParser.AmbilJson(link_url);
try {
data = json.getJSONArray("data");
for (int i = 0; i < data.length();
i++) {
JSONObject ar = data.getJSONObject(i);
String nim =
ar.getString(AR_NIM);
String nama =
ar.getString(AR_Nama);
HashMap<String,
String> map = new HashMap<String, String>();
map.put(AR_NIM, nim);
map.put(AR_Nama, nama);
daftar.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
this.adapter_listview();
}
public void adapter_listview()
{
ListAdapter adapter = new SimpleAdapter(this, daftar,
R.layout.list_item, new String[] { AR_NIM, AR_Nama },
new int[] { R.id.nim, R.id.nama });
setListAdapter(adapter);
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long no) {
// TODO Auto-generated method stub
String nim =
((TextView) view.findViewById(R.id.nim)).getText()
.toString();
Intent in = new Intent(ViewAct.this, DetailAkses.class);
in.putExtra(AR_NIM, nim);
startActivity(in);
}
});
}
@Override
public boolean
onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater =
getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean
onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu1:
Toast.makeText(this, "View
Data", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, ViewAct.class);
startActivity(intent);
break;
case R.id.menu2:
Toast.makeText(this, "Input
Data", Toast.LENGTH_SHORT).show();
Intent intent2 = new Intent(this, Praktek_jsonActivity.class);
startActivity(intent2);
break;
}
return true;
}
}
DetailAkses.java
package arumjiyu.net;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class DetailAkses extends Activity {
private static final String AR_NIM = "nim";
JSONArray data = null;
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.single_list);
Intent in = getIntent();
String nim = in.getStringExtra(AR_NIM);
String link_url = "http://10.0.3.2/json/detail.php?nim=" + nim;
JSONParser jParser = new JSONParser();
JSONObject json =
jParser.AmbilJson(link_url);
try {
data = json.getJSONArray("data");
for (int i = 0; i < data.length();
i++) {
JSONObject ar = data.getJSONObject(i);
TextView nim1 =
(TextView) findViewById(R.id.nim);
TextView nama =
(TextView) findViewById(R.id.nama);
TextView alamat1 =
(TextView) findViewById(R.id.alamat);
String
nim_d = ar.getString("nim");
String nama_d =
ar.getString("nama");
String alamat_d =
ar.getString("alamat");
nim1.setText(nim_d);
nama.setText(nama_d);
alamat1.setText(alamat_d);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
Keenam, jangan lupa mendaftarkan class Activity yang sudah kita buat di AndroidManifest.xml, selain mendaftarkan Activity juga tambahkan uses permission berikut tambahan kodenya :
Ketujuh, buatlah 3 (tiga) Layout, berikut source code masing-masing layout :
hal_view.xml
<?xml version="1.0"
encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</ListView>
</LinearLayout>
list_item.xml
<?xml version="1.0"
encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#D7DEF0"
android:orientation="horizontal"
>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:orientation="vertical"
>
<!-- Name
Label -->
<TextView
android:id="@+id/nama"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="#333333"
android:textSize="16sp"
android:textStyle="bold"
/>
<TextView
android:id="@+id/alamat"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="#666666"
android:textSize="11sp"
>
</TextView>
<TextView
android:id="@+id/nim"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#D7DEF0"
android:textSize="1sp"
>
</TextView>
</LinearLayout>
</LinearLayout>
single_list.xml
<?xml version="1.0"
encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#D7DEF0"
android:orientation="vertical"
android:padding="10dp"
>
<TextView
android:id="@+id/nim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dip"
android:paddingTop="10dip"
android:textColor="#333333"
android:textSize="20dip"
android:textStyle="bold"
/>
<TextView
android:id="@+id/nama"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dip"
android:paddingTop="5dip"
android:textColor="#999999"
android:textSize="12dip"
android:textStyle="bold"
/>
<TextView
android:id="@+id/alamat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#333333"
android:textSize="14dip"
/>
</LinearLayout>
Kedelapan, buat folder menu di folder res dan buat Android XML File disini saya berinama menu.xml di dalam folder menu seperti berikut :
Source code menu.xml :
<?xml version="1.0"
encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:id="@+id/menu1"
android:title="View
Data"></item>
<item
android:id="@+id/menu2"
android:title="Input
Data"></item>
</menu>
Terakhir, 4 (empat) file PHP berikut source code dari masing-masing file PHP :
koneksi.php
addmhs.php
data.php
detail.php
Hasilnya :
Masukkan
Data klik menu pada emulator kemudian pilih menu View Data
Cek database = Listview
Lihat Detail Data dengan mengklik item di list Tampilan Detail Data
Sekian Tutorial dari saya semoga bermanfaat, jika ada kesulitan atau masalah silahkan tinggalkan komentar. Untuk selanjutnya saya akan berbagi bagaimana cara membuat CRUD (Create , Read, Update, Delete) . Untuk download file dan programnya diatas klik disini.
Terima kasih J Sudah berkunjung nantikan tutorial selanjutnya...
Good Job Arum-Chan! This is the first coment in your vlog. Arigatou Gozaimaz..
BalasHapusya, thank you and Douitashimash :)
Hapusecieeee arum puji, a programer, succes my bestie
BalasHapusAamiin,
HapusOK, you too, sobat :)
data gagal terus
BalasHapuspesan data gagal dikarenakan tidak terhubung atau gagal memanggil file aksi.php
HapusHttpResponse;
BalasHapusHttpClient;
HttpGet;
DefaultHttpClient;
di isi apa ya?