Subscribe For Free Updates!

We'll not spam mate! We promise.

Rabu, 12 Agustus 2015

Membuat program INPUT dan Select menggunakan JSON

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;
}

}

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;

}
}

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... 

Socializer Widget By Blogger Yard
SOCIALIZE IT →
FOLLOW US →
SHARE IT →

7 komentar:

  1. Good Job Arum-Chan! This is the first coment in your vlog. Arigatou Gozaimaz..

    BalasHapus
  2. ecieeee arum puji, a programer, succes my bestie

    BalasHapus
  3. Balasan
    1. pesan data gagal dikarenakan tidak terhubung atau gagal memanggil file aksi.php

      Hapus
  4. HttpResponse;
    HttpClient;
    HttpGet;
    DefaultHttpClient;

    di isi apa ya?

    BalasHapus