Membuat aplikasi untuk menampilkan data di Android dari Database...
Langsung saja kita ke langkah pembuatannya :
Langkah Pertama, Membuat Database...
CREATE DATABASE db_makanan;
CREATE TABLE tbl_makanan (
id INT(4) NOT NULL AUTO_INCREMENT,
nama_makanan VARCHAR(32) NOT NULL,
harga INT(10) NOT NULL,
PRIMARY KEY (id)
)
ENGINE=MyISAM;
Setelah itu, kita perlu membuat file php untuk memasukkan data ke dalam database...buat file bernama
addmakanan.php
<?php
$nama = $_GET['nama'];
$harga = $_GET['harga'];
$link = mysql_connect('localhost', 'user', 'password') or die('Cannot connect to the DB');
mysql_select_db('db_makanan', $link) or die('Cannot select the DB');
/* grab the posts from the db */
$query = "insert into tbl_makanan (nama_makanan,harga) values('".$nama."',".$harga.")";
$result = mysql_query($query, $link) or die('Error query: '.$query);
echo "SUCCESS";
?>
Lalu buat file php dengan nama
daftarmakanan.php, untuk menampilkan data..
<?php
$link = mysql_connect('localhost', 'user', 'password') or die('Cannot connect to the DB');
mysql_select_db('db_makanan', $link) or die('Cannot select the DB');
/* grab the posts from the db */
$query = "SELECT nama_makanan, harga FROM tbl_makanan";
$result = mysql_query($query, $link) or die('Errorquery: '.$query);
$rows = array();
while ($r = mysql_fetch_assoc($result)) {
$rows[] = $r;
}
$data = "{makanan:".json_encode($rows)."}";
echo $data;
?>
Langsung saja, sekarang kita buat pada androidnya..kita buat tambah.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:text="Nama Makanan :" android:id="@+id/TextView01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<EditText android:text="" android:id="@+id/txtNama"
android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>
<TextView android:text="Harga :" android:id="@+id/TextView02"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<EditText android:text="" android:id="@+id/txtHarga"
android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>
<Button android:text="Simpan" android:id="@+id/btnSimpan"
android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
</LinearLayout>
Lalu buat daftarmakanan.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="Baca Data Dari server dengan JSON" />
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="Daftar Makanan" />
<TextView android:layout_width="fill_parent" android:id="@+id/TextViewResult"
android:layout_height="wrap_content" android:text="Hasil JSON" />
</LinearLayout>
Sekararang Mari kita buat Menu dari aplikasi ini, yang didalamnya terdapat navigasi
untuk masuk ke Form Tambah,
ke Daftar Makanan dan keluar Aplikasi. Edit File
MainActivity.java
package com.agus.android.php;
/**
* Class InsertActivity
* @version 1.0 Dec 18, 2011
* @author Agus Haryanto (agus.superwriter@gmail.com)
* @website http://agusharyanto.net
*/
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// Create an array of Strings, that will be put to our ListActivity
String[] menu = new String[] { "Tambah Data", "Tampilkan Data", "Exit" };
// Create an ArrayAdapter, that will actually make the Strings above
// appear in the ListView
// Menset nilai array ke dalam list adapater sehingga data pada array
// akan dimunculkan dalam list
this.setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, menu));
}
@Override
/**method ini akan mengoveride method onListItemClick
* yang ada pada class List Activity
* method ini akan dipanggil apabilai ada salah satu item
* dari list menu yang dipilih
*/
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// Get the item that was clicked
Object o = this.getListAdapter().getItem(position);
String pilihan = o.toString();
tampilkanPilihan(pilihan);
}
protected void tampilkanPilihan(String pilihan) {
try {
Intent i = null;
if (pilihan.equals("Tambah Data")) {
i = new Intent(this, InsertActivity.class);
} else if (pilihan.equals("Tampilkan Data")) {
i = new Intent(this, JSONActivity.class);
} else if (pilihan.equals("Exit")) {
finish();
} else {
Toast.makeText(this,"Anda Memilih: " + pilihan + " , " +
"Actionnya belum dibuat", Toast.LENGTH_LONG).show();
}
startActivity(i);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Sekarang Bagian Form Tambah Datanya, Buat Class baru dengan nama InsertActivity.java.
package com.agus.android.php;
/**
* Class InsertActivity
* @version 1.0 Dec 18, 2011
* @author Agus Haryanto (agus.superwriter@gmail.com)
* @website http://agusharyanto.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.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class InsertActivity extends Activity {
private EditText txtNama;
private EditText txtHarga;
private Button btnSimpan;
// Seusuaikan url dengan nama domain yang anda gunakan
private String url = "http://10.0.2.2/android/addmakanan.php";
/**
* Method yang dipanggil pada saat aplikaasi dijalankan
* */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tambah);
txtNama = (EditText) findViewById(R.id.txtNama);
txtHarga = (EditText) findViewById(R.id.txtHarga);
btnSimpan = (Button) findViewById(R.id.btnSimpan);
// daftarkan even onClick pada btnSimpan
btnSimpan.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
try {
// setiap parameter yang akan dikirim melalui http
// harus encode agar
// dapat terbaca dengan baik oleh server
String nama = URLEncoder.encode(txtNama.getText()
.toString(), "utf-8");
String harga = URLEncoder.encode(txtHarga.getText()
.toString(), "utf-8");
url += "?nama=" + nama + "&harga=" + harga;
getRequest(url);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
/**
* Method untuk Mengirimkan data kes erver event by button login diklik
*
* @param view
*/
public void getRequest(String Url) {
Toast.makeText(this, "Tambah Data " + Url + " ", Toast.LENGTH_SHORT)
.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, "Tambah Data Gagal !", Toast.LENGTH_SHORT)
.show();
}
}
/**
* Method untuk Menenrima data dari server
*
* @param response
* @return
*/
public static String request(HttpResponse response) {
String result = "";
try {
InputStream in = response.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 ex) {
result = "Error";
}
return result;
}
}
Waktunya kita buat Class untuk menampilkan data dari server dalam bentuk JSON,
buat class baru dengan nama JSONActivity.java
package com.agus.android.php;
/**
* Class JSONActivity
* @version 1.0 Dec 18, 2011
* @author Agus Haryanto (agus.superwriter@gmail.com)
* @website http://agusharyanto.net
*/
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
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 org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class JSONActivity extends Activity {
private JSONObject jObject;
private String xResult ="";
//Seusuaikan url dengan nama domain yang anda gunakan
private String url = "http://10.0.2.2/android/daftarmakanan.php";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.daftarmakanan);
TextView txtResult = (TextView)findViewById(R.id.TextViewResult);
xResult = getRequest(url);
try {
parse(txtResult);
} catch (Exception e) {
e.printStackTrace();
}
}
private void parse(TextView txtResult) throws Exception {
jObject = new JSONObject(xResult);
JSONArray menuitemArray = jObject.getJSONArray("makanan");
String sret="";
for (int i = 0; i < menuitemArray.length(); i++) {
sret +=menuitemArray.getJSONObject(i)
.getString("nama_makanan").toString()+" : ";
System.out.println(menuitemArray.getJSONObject(i)
.getString("nama_makanan").toString());
System.out.println(menuitemArray.getJSONObject(i).getString(
"harga").toString());
sret +=menuitemArray.getJSONObject(i).getString(
"harga").toString()+"\n";
}
txtResult.setText(sret);
}
/**
* Method untuk Mengirimkan data kes erver
* event by button login diklik
*
* @param view
*/
public String getRequest(String Url){
String sret="";
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(Url);
try{
HttpResponse response = client.execute(request);
sret =request(response);
}catch(Exception ex){
Toast.makeText(this,"Gagal "+sret, Toast.LENGTH_SHORT).show();
}
return sret;
}
/**
* Method untuk Menenrima data dari server
* @param response
* @return
*/
public static String request(HttpResponse response){
String result = "";
try{
InputStream in = response.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 ex){
result = "Error";
}
return result;
}
}
Lalu Edit AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.agus.android.php"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".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>
<activity android:name=".InsertActivity" android:label="Tambah Data">
</activity>
<activity android:name="JSONActivity" android:label="Daftar Makanan">
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
</manifest>
Download Tutorial lengkap di http://adf.ly/RJdrZ