Tuesday, September 16, 2014

Cara Membuat Spinner Android dengan Database MySQL


Lanjut lagi ke bagian tutorial Android, kali ini saya ingin share sedikit tentang bagaimana caranya membuat Spinner dari database MySQL. Artikel ini lanjutan dari artikel sebelumya yaitu Membuat Listview dari Database PhpMyAdmin di Android.

Sebenarnya bisa dibilang codingan/post ini melanjutkan postingan saya yang kemaren-kemaren yaitu Cara Membuat UUD'45 Dengan Android, jadi sekarang pada tutorial/post ini saya menambahkan sebuah spinner ke project tersebut. 
Kan di kamus itu ada dibuat masukkan nomor nya dan disini saya buat jadi spinner yang datanya di ambil dari database MySQL. Dengan tujuan supaya kita/user tidak perlu repot-repot mengetikkan nomor Undang-Undang yang ingin kita lihat. Jadi tinggal klik spinnernya dan akan muncul nomor Undang-Undang yang ada pada database kita.

UUD 1945
Okelah langsung kita mulai. Langkah pertama yang harus kita lakukan adalah membuat database MySQLnya. Disini saya buat database dengan nama 'test' kemudian buat tabel dengan nama 'form' yang fieldnya cuma 'id (int)'.

Tampilan phpMyAdmin
Setelah itu kita buat folder baru di folder xampp dengan nama NIEL trus di dalam inilah kita buat file PHP yang menangani koneksi ke MySQL.
File yang pertama kita buat adalah koneksi.php, file ini berfungsi untuk menangani koneksi ke database MySQL. 
koneksi.php
Selanjutnya kita buat file service.php, file ini berfungsi untuk mengambil data dari database tadi.

service.php
Selanjutnya kita ke beralih ke file Android. Sekarang kita perbaharui file xmlnya. EditText nya kita ganti menjadi Spinner.

main.xml yang baru
Setelah itu kita update file showKamus.java nya. Dimana disini saya menambahkan method baru yaitu fetch() yang menangani pengambilan data dari database melalui file PHP tadi. Full projectnya dapat di download disini.. Cara Membuat Spinner Android  dengan Database MySQL

package com.Booting;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.os.Bundle;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class showKamus extends Activity {
private SQLiteDatabase db = null;
private Cursor kamusCursor = null;
private Spinner txtInggris;
private TextView txtIndonesia;
private DataKamus datakamus = null;
public static final String INDONESIA = "indonesia";
public static final String INGGRIS = "inggris";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
datakamus = new DataKamus(this);
db = datakamus.getWritableDatabase();
datakamus.createTable(db);
datakamus.generateData(db);

setContentView(R.layout.main);
txtInggris = (Spinner) findViewById(R.id.txtInggris);
txtIndonesia = (TextView) findViewById(R.id.txtIndonesia);

fetch();
}

public void getTerjemahan(View view) {
String result= "";

String englishword = txtInggris.getSelectedItem().toString();
kamusCursor = db.rawQuery("SELECT ID, NO, ISI " + "FROM kamus where NO = '" + englishword + "'ORDER BY NO", null);

// TODO Membaca data dari kamusCursor dan menampungnya di result
// TODO Membaca string di index 2 yaitu bahasa inggris
if (kamusCursor.moveToFirst()) {
result = kamusCursor.getString(2);
for (;!kamusCursor.isAfterLast(); kamusCursor.moveToNext()) {
result = kamusCursor.getString(2);
}
}

// TODO Menampilkan not found jika data tidak sesuai atau tidak ada di database
if (result.equals("")) {
result = "Terjemahan Not Found";
}

// TODO Menampilkan datanya setelah ditampung
txtIndonesia.setText(result);
}

@Override
public void onDestroy() {
super.onDestroy();
kamusCursor.close();
db.close();
}

public void fetch() {
String url = Referensi.url+"/service.php?ct=SEL_nama";
HttpClient httpclient = new DefaultHttpClient();
HttpRequestBase httpRequest = null;
HttpResponse httpResponse = null;
InputStream inputStream = null;
String response = "";
StringBuffer buffer = new StringBuffer();
httpRequest = new HttpGet(url);
try {
httpResponse = httpclient.execute(httpRequest);
} catch (ClientProtocolException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}

try {
inputStream = httpResponse.getEntity().getContent();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

byte[] data = new byte[512];
int len = 0;

try {
while (-1 != (len = inputStream.read(data)) ) {
buffer.append(new String(data, 0, len));
}
} catch (IOException e) {
e.printStackTrace();
}

try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}

response = buffer.toString();
StringParser parser = new StringParser();
ArrayList output = parser.Parse(response);
Object[] Output = output.toArray();
String[] content = new String[Output.length];

for (int i=0;i adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, content);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
txtInggris.setAdapter(adapter);
}
}

Sumber : http://www.booting09.com
Disqus Comments