Upload
mukidin
View
251
Download
0
Embed Size (px)
DESCRIPTION
Materi Android Fast Track Db Sqlite
Citation preview
ANDROID FAST TRACK
Tentang Penulis
Agus Haryanto, MKOMhttp://agusharyanto.net@[email protected]
08551000444 / 089617122766
Juara 2 Indosat M2 Android Application Contest
Juara 1 BBDEVID Challenge Blackberry Application (Webworks)
Juara Harapan Kompetisi Android T-Market (Telesindo)
ANDROID FAST ANDROID FAST
TRACKTRACK
A G U S H A RYA N T OA G U S H A RYA N T O
C O N T E N T SPreface...........................................................................................vii
Pengenalan Android ........................................................................9
Kenalan dengan Android.............................................................9Instalasi Android.......................................................................10Project Android pertama...........................................................11
Pengenalan User Interface ............................................................19
Mengenal Layout......................................................................19Mengenal View.........................................................................32
Android Database SQLITE.............................................................43
SQLITE......................................................................................43Kamus Tiga Bahasa (CRUD)......................................................44
Android Google Map......................................................................81
Menampilkan Data GPS............................................................81Menampilkan Map pada Android...............................................89Menampilkan Direction pada Map ..........................................102
Android PHP MySQL.....................................................................115
CRUD Android PHP Mysql........................................................115 Penutup.......................................................................................141
Semangat...............................................................................141Seminar Workshop Android.....................................................141Referensi................................................................................142
v | Android Fast Track
P R E FA C E
Android begitu fenomenal diusianya masih muda sudah
mampu mendominasi pasar smartphone dunia. Bagi pengem
bang aplikasi itu adalah pasar yang besar untuk aplikasinya.
Untuk membuat aplikasi android tidaklah sesulit yang dibay
angkan. Syarat utamanya kita harus menguasai dasar java
dan konsep object orientedya (OOP). Pada buku Android Fast
Track ini akan membahas bagian-bagian penting dalam
pembuatan aplikasi Android meliputi Pengenalan dasar pem
buatan aplikasi android, pengenalan cara menggunakan data
base sqlite android, pengenalan cara menggunakan Map API 2
untuk mengembangkan aplikasi android yang menggunakan
peta. Pengenalan cara membuat aplikasi android yang datan
ya tersimpan di server
Buku ini tentunya masih jauh dari sempurna. Untuk itu
apabila ada masukkan langsung saja email ke
[email protected]. Untuk melihat tutorial android
lainnya dapat berkunjung ke situs http://agusharyanto.net
Untuk kampus atau sekolah yang berminat
mengadakan seminar atau workshop android atau lainnya
bisa hubungi saya di email [email protected]
,twitter @agus_inovator atau di 0855-1000-444. Khusus un
tuk luar kota biaya transportasi dan akomodasi ditanggung
penyelenggara acara.
vii
ANDROID
DATABASE
SQLITE
Sebelumnya kita sudah belajar membuat aplikasi sederhana
pada Android, nah sekarang mari kita buat aplikasi yang lebih keren,
aplikasi yang menggunakan database SQLite.
SQLITESeperti telah dijelaskan diatas database pada android menggun
akan SQLite. Dengan SQLite untuk insert, update dan query data
dapat dilakukan dengan syntak SQL.
Untuk itu sebelum melangkah pembuatan aplikasi Android yang memanfatkan firtur SQlite databasenya, kita harus menguasai cara
menggunakan SQLite.
Sama seperti database lainnya syntak SQLnya terbagi 2 kategori yaitu syntak untuk Data Definition Language (DDL) dan Data Manip
ulation Language (DML). Bagi yang pernah belajar database pasti
tidak asing dengan kedua istilah tersebut.
3
ANDROID FAST TRACK
Sekarang ada pertanyaan nih apa beda DDL dan DML ?
Biar mudah dipahami, kalau database itu kita ibaratkan sebuah rumah, maka DDL itu adalah syntax untuk membuat rumah, menam
bah kamar, merubah bangunan rumah, makanya yang termasuk syn
tak-syantak DDL adalah create table, alter table, drop table.
sedangkan DML adalah syntax untuk mengetahui isi rumah,
siapa saja penghuninya, berapa jumlahnya, ada berapa yang pria dan
yang wanita, adakah anak-anak dirumah itu.
Makanya yang termasuk syntak-syntak DML adalah insert, up
date, delete, select
Untuk mengetahui lebih lanjut tentang sqlite bisa kunjungi SQL
ite Home Page
KAMUS T IGA BAHASA (CRUD)Sekarang mari kita buat project yang menggunakan database
sqlite di android. Dulu sebelum pakai android dihandphone yang
dulu pasati pernah install kamus inggris Indonesia, yang kita gunakan untuk mencari terjemahan suatu kata dalam bahasa indonesia
ke bahasa inggris dan jerman. Sebetulnya diandroid juga sudah ada yang buat. Tetapi tentunya akan lebih puas jika kita buat sendiri.
Goal dari Aplikasi ini adalah untuk memahami CRUD dbsqlite pada
Android.
Berikut langkah-langkahnya
10 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
1. Buat project baru android dengan nama Kamus
2. Buat Class baru dengan nama DatabaseHelper.java
package net.agusharyanto.kamus;
import android.content.ContentValues;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME =
"dbkamus";public static final String INGGRIS= "inggris";public static final String INDONESIA =
"indonesia";public static final String JERMAN = "JERMAN";
//Constructor DataKamus untuk initiate databasepublic DatabaseHelper(Context context) {
11 | Android Database SQLITE
ANDROID FAST TRACK
super(context, DATABASE_NAME, null, 1);}
//method createTable untuk membuat table kamuspublic void createTable(SQLiteDatabase db){
db.execSQL("DROP TABLE IF EXISTS kamus");db.execSQL("CREATE TABLE if not exists
kamus (_id INTEGER PRIMARY KEY AUTOINCREMENT, " +"inggris TEXT, indonesia TEXT,
jerman TEXT);");}
//method generateData untuk mengisikan data ke kamus.
public void generateData(SQLiteDatabase db){ContentValues cv=new ContentValues();cv.put(INGGRIS, "run");cv.put(INDONESIA, "lari");cv.put(JERMAN, "laufen");db.insert("kamus", INGGRIS, cv);cv.put(INGGRIS, "walk");cv.put(INDONESIA, "jalan");cv.put(JERMAN, "gehen");db.insert("kamus", INDONESIA, cv);cv.put(INGGRIS, "read");cv.put(INDONESIA, "membaca");cv.put(JERMAN, "lesen");db.insert("kamus", JERMAN, cv);
}
@Overridepublic void onUpgrade(SQLiteDatabase db, int
oldVersion, int newVersion) {// TODO Auto-generated method stubcreateTable(db);generateData(db);
}
@Overridepublic void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub//Toast.makeText(getBaseContext(),
"Oncreate", Toast.LENGTH_SHORT).show();createTable(db);generateData(db);
12 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
}}
Pada class inilah database dibuat dengan nama dbkamus, disini
table juga dibuat dengan nama kamus dan diisikan dengan beberapa
data.
3. Edit file activity_main.xml pada direktori res/layout lalu ketikan
kode berikut<?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" >
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Kamus Inggris Indonesia Jerman" />
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Inggris :" > </TextView>
<EditText android:id="@+id/txtInggris" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" >
<requestFocus> </requestFocus> </EditText>
<Button android:id="@+id/btnTerjemah" android:layout_width="fill_parent" android:layout_height="wrap_content"
13 | Android Database SQLITE
ANDROID FAST TRACK
android:onClick="getTerjemahan" android:text="Terjemahkan" > </Button>
<TextView android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Indonesia :" > </TextView>
<EditText android:id="@+id/txtIndonesia" android:layout_width="fill_parent" android:layout_height="wrap_content" android:editable="false" android:text="" > </EditText>
<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Jerman" > </TextView>
<EditText android:id="@+id/txtJerman" android:layout_width="fill_parent" android:layout_height="wrap_content" > </EditText>
</LinearLayout>
Disini untuk user interface menggunakan linear layout yang did
alamnya ada tiga edit text dan satu button
4. Edit file MainActivity.java yang ada apada direktori src/ lalu
ketikan kode berikutpackage net.agusharyanto.kamus;
import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;
14 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
import android.view.View;import android.widget.EditText;import android.widget.Toast;
public class MainActivity extends Activity { private SQLiteDatabase db = null;
private Cursor kamusCursor = null;private EditText txtInggris;private EditText txtIndonesia;private EditText txtJerman;private DatabaseHelper datakamus = null;public static final String INGGRIS = "inggris";public static final String INDONESIA =
"indonesia";
/** Called when the activity is first created. */ @Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);datakamus = new DatabaseHelper(this);db = datakamus.getWritableDatabase();setContentView(R.layout.activity_main);txtInggris = (EditText)
findViewById(R.id.txtInggris);txtIndonesia = (EditText)
findViewById(R.id.txtIndonesia);txtJerman = (EditText)
findViewById(R.id.txtJerman);}
public void getTerjemahan(View view) {String bhsindonesia = "";String bhsjerman="";String englishword =
txtInggris.getText().toString();kamusCursor = db.rawQuery("SELECT _ID,
INGGRIS, INDONESIA, JERMAN "+ "FROM kamus where INGGRIS='"
+ englishword+ "' ORDER BY INGGRIS", null);
if (kamusCursor.moveToFirst()) {for (; !kamusCursor.isAfterLast();
15 | Android Database SQLITE
ANDROID FAST TRACK
kamusCursor.moveToNext()) {bhsindonesia =
kamusCursor.getString(2);bhsjerman =
kamusCursor.getString(3);}
}else{Toast.makeText(getBaseContext(),
"Terjemahan Tidak ditemukan", Toast.LENGTH_SHORT).show();
}txtIndonesia.setText(bhsindonesia);txtJerman.setText(bhsjerman);
}
@Overridepublic void onDestroy() {
super.onDestroy();try {kamusCursor.close();db.close();}catch (Exception e){
}}
}
16 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
5. Sekarang mari kita run projectnya
Pada isian Inggris ketikan run lalu klik button Terjemahkan.
Coba isi inggris diisi dengan sepatu lalu klik Terjemahkan
Coba inggris tidak diisi lalu klik Terjemahkan
6. Oke kita sudah berhasil membuat kamus, sekarang kita ingin
menampilkan kata-kata dalam database kedalam list.
7. Buat Layout baru dengan nama row.xml lalu ketikan kode
berikut<?xml version="1.0" encoding="utf-8"?><RelativeLayout
17 | Android Database SQLITE
ANDROID FAST TRACK
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:paddingBottom="5sp" android:paddingTop="5sp" >
< TextView android:id="@+id/inggris" android:layout_width="100sp" android:layout_height="wrap_content" android:layout_alignParentLeft="true" />
< TextView android:id="@+id/indonesia" android:layout_width="100sp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/inggris" />
< TextView android:id="@+id/jerman" android:layout_width="100sp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/indonesia" />
</RelativeLayout>
8. Buat Layout baru dengan nama daftarkata.xml lalu ketikan
kode berikut<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" >
<TextView android:id="@+id/textView1" android:layout_width="100sp" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text = "Inggris"
18 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
android:textSize="20sp" /> <TextView android:id="@+id/textView2" android:layout_width="100sp" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/textView1" android:text = "Indonesia" android:textSize="20sp" />
<TextView android:id="@+id/textView3" android:layout_width="100sp" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/textView2" android:text = "Jerman" android:textSize="20sp" />
<ListView android:id="@+id/list1" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight = "1"
android:layout_alignParentLeft="true" android:layout_below="@+id/textView1"/>
</RelativeLayout>
9. Buat Class baru dengan nama Daftarkata.java lalu ketikkan
kode berikut.package net.agusharyanto.kamus;
import android.app.Activity;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;
19 | Android Database SQLITE
ANDROID FAST TRACK
import android.view.ViewGroup;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;
public class DaftarKata extends Activity {private DatabaseHelper dbhelper;private SQLiteDatabase db = null;private ListView listContent = null;
private Cursor kamusCursor = null;CustomCursorAdapter adapter;
/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);dbhelper = new DatabaseHelper(this);
setContentView(R.layout.daftarkata);listContent = (ListView)
findViewById(R.id.list1);isDataListView();
}
private void isDataListView() {
try {db = dbhelper.getWritableDatabase();
kamusCursor = db.query("kamus", new String[] { "_id", "inggris",
"indonesia", "jerman" }, "_id>0", null, null, null, null);
// startManagingCursor( jasaCursor);/* * Create an array to specify the
fields we want to display in the * list (only the
'inggris,indonesia,jerman' column in this case) */String[] from = new String[] {
"inggris", "indonesia", "jerman" };
20 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
/* * and an array of the fields we want
to bind those fieiplds to (in * this case just the textView
'inggris,indonesia,jerman' from our new row.xml * layout above) */int[] to = new int[] { R.id.inggris,
R.id.indonesia, R.id.jerman };
/* Now create a simple cursor adapter.. */
adapter = new CustomCursorAdapter(this, R.layout.row, kamusCursor,
from, to);
// listView.setAdapter(adapter);listContent.setAdapter(adapter);
} catch (Exception e) {e.printStackTrace();
} finally {
if (db != null && db.isOpen()) {db.close();
}}
}
@Overridepublic void onDestroy() {
super.onDestroy();try {
kamusCursor.close();} catch (Exception e) {
}}
protected class CustomCursorAdapter extends SimpleCursorAdapter {
private int layout;private LayoutInflater inflater;
21 | Android Database SQLITE
ANDROID FAST TRACK
private Context context;
public CustomCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {super (context, layout, c, from, to); this.layout = layout;this.context = context;inflater =
LayoutInflater.from(context);
}
@Overridepublic View newView(Context context, Cursor
cursor, ViewGroup parent) {Log.d("NewView", "*****xxx");
View v = inflater.inflate(R.layout.row, parent, false);
return v;}
@Overridepublic void bindView(View v, Context
context, Cursor c) {// 1 is the column where you're
getting your data fromString inggris = c.getString(1);String jerman = c.getString(3);String indonesia = c.getString(2);
/** * Next set the name of the entry. */TextView name_text = (TextView)
v.findViewById(R.id.inggris);TextView des_text = (TextView)
v.findViewById(R.id.jerman);TextView id_text = (TextView)
v.findViewById(R.id.indonesia);des_text.setText(jerman);id_text.setText(indonesia);
22 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
if (name_text != null) {name_text.setText(inggris);
}}
}}
10. Rubah bagian yang bercetak tebal pada AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.agusharyanto.kamus" android:versionCode="1" android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="net.agusharyanto.kamus.DaftarKata" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
</manifest>
11. Sekarang mari kita Run projectnya.
23 | Android Database SQLITE
ANDROID FAST TRACK
12. Kita sudah sukses menampilkan daftar kata, selanjutnya kita
akan menyedian form untuk menambahkan kata.
13. Buat layout baru dengan nama tambahkata.xml selanjutnya
ketikan kode berikut<?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" >
<TextView android:layout_width="fill_parent"
24 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
android:layout_height="wrap_content" android:text = "Kamus Inggris Indonesia Jerman" />
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text = "Inggris :" > </TextView>
< EditText android:id="@+id/txtInggris" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" > </EditText>
<TextView android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text = "Indonesia :" > </TextView>
< EditText android:id="@+id/txtIndonesia" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" > </EditText>
<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text = "Jerman" > </TextView>
< EditText android:id="@+id/txtJerman" android:layout_width="fill_parent" android:layout_height="wrap_content" > </EditText>
25 | Android Database SQLITE
ANDROID FAST TRACK
<Button android:id="@+id/btnTerjemah" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="saveData" android:text = "Save Data" > </Button>
</LinearLayout>
14. Buat class baru dengan nama TambahKata.java
package net.agusharyanto.kamus;
import android.app.Activity;import android.content.ContentValues;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.Toast;
public class TambahKata extends Activity{
private SQLiteDatabase db = null;
private EditText txtInggris;private EditText txtIndonesia;private EditText txtJerman;private DatabaseHelper datakamus = null;public static final String INGGRIS= "inggris";public static final String INDONESIA =
"indonesia";public static final String JERMAN = "JERMAN";
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);datakamus = new DatabaseHelper(this);db = datakamus.getWritableDatabase();setContentView(R.layout.tambahkata);txtInggris = (EditText)
findViewById(R.id.txtInggris);txtIndonesia = (EditText)
findViewById(R.id.txtIndonesia);txtJerman = (EditText)
26 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
findViewById(R.id.txtJerman);
}
public void saveData(View view) {String bhsindonesia =
txtIndonesia.getText().toString();;String bhsjerman=
txtJerman.getText().toString();String englishword =
txtInggris.getText().toString();ContentValues cv=new ContentValues();cv.put(INGGRIS, englishword);cv.put(INDONESIA, bhsindonesia);cv.put(JERMAN, bhsjerman);if (db.insert("kamus", INGGRIS, cv)>0){
Toast.makeText(getBaseContext(), "Save Data Success", Toast.LENGTH_SHORT).show();
}else{Toast.makeText(getBaseContext(),
"Save Data Fail", Toast.LENGTH_SHORT).show();}
}
@Overridepublic void onDestroy() {
super.onDestroy();
db.close();}
}
15. Rubah AndroidManifest.xml yang bercetak tebal
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.agusharyanto.kamus" android:versionCode="1"
27 | Android Database SQLITE
ANDROID FAST TRACK
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="net.agusharyanto.kamus.TambahKata" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
</manifest>
28 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
16. Sekarang mari kita run projectnya.
17. Bagaimana melihat hasilnya ? apa harus rubah AndroidMani
fest.xml. Cara yang lebih baik adalah dengan membuat menu yang
dapat mengakses form Terjemahan , Daftar Kata dan Tambah Kata
18. Buat Class baru dengan nama MenuActivity.java lalu ketikkan
kode berikutpackage net.agusharyanto.kamus;
import android.app.ListActivity;import android.content.Intent;import android.os.Bundle;import android.view.View;
29 | Android Database SQLITE
ANDROID FAST TRACK
import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;
public class MenuActivity extends ListActivity {String[] menuutama = new String[] { "Terjemah
Kata", "Tambah Kata","Daftar Kata", "Keluar Aplikasi" };
public void onCreate(Bundle icicle) {super.onCreate(icicle);// Menset nilai array ke dalam list
adapater sehingga data pada array// akan dimunculkan dalam listthis.setListAdapter(new
ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, menuutama));}
@Override/**method ini akan mengoveride method
onListItemClick yang ada pada class List Activity * method ini akan d1ipanggil 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);// Menangkap nilai text yang dklikObject o =
this.getListAdapter().getItem(position);String pilihan = o.toString();// Menampilkan hasil pilihan menu dalam
bentuk ToasttampilkanPilihan(pilihan);
}
protected void tampilkanPilihan(String pilihan) {try {
//Intent digunakan untuk sebagai pengenal suatu activity
Intent i = null;
30 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
if (pilihan.equals("Terjemah Kata")) {
i = new Intent(this,MainActivity.class);
} else if (pilihan.equals("Tambah Kata")) {
i = new Intent(this, TambahKata.class);
} else if (pilihan.equals("Daftar Kata")) {
i = new Intent(this, DaftarKata.class);
} else if (pilihan.equals("Keluar Aplikasi")) {
finish();} else {
Toast.makeText(this,"Anda Memilih: " + pilihan + " , Actionnya belum dibuat", Toast.LENGTH_LONG).show();
}startActivity(i);
} catch (Exception e) {e.printStackTrace();
}}
}
19. Pada AndroidManifet.xml rubah dan tambahkan yang bercetak
tebal<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.agusharyanto.kamus" android:versionCode="1" android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
<application android:allowBackup="true" android:icon="@drawable/ic_launcher"
31 | Android Database SQLITE
ANDROID FAST TRACK
android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="net.agusharyanto.kamus.MenuActivity" 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="MainActivity" android:label="Terjemah Kata"> </activity> <activity android:name="DaftarKata" android:label="Daftar Kata"> </activity> <activity android:name="TambahKata" android:label="Tambah Kata"> </activity> </application>
</manifest>
32 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
20. Sekarang mari kita run projectnya
Klik masing-masing menu.
21. Sekarang kita melangkah kebagian Rubah data dan Hapus data.
Pasti kita memikirkan bagaiman cara menempatkan Edit dan Hapus ini. Aha kita letakan saja di DaftarKata. Jadi ketika satu baris kata di
klik lama (long click) akan memunculkan menu edit dan hapus.
22. Buka file String.xml pada direktori value ketikan kode berikut
<?xml version="1.0" encoding="utf-8"?><resources>
<string name="app_name">Kamus</string>
33 | Android Database SQLITE
ANDROID FAST TRACK
<string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="ok">OK</string> <string name="save">Simpan</string> <string name="cancel">Cancel</string> <string name="add_title">Edit Kamus</string> <string name="delete_title">Hapus Kamus, And yakin ?</string>
</resources>
23. Tambahkan layout untuk edit data beri nama edit.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" >
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text = "Inggris :" > </TextView>
< EditText android:id="@+id/inggris" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" > </EditText>
<TextView android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text = "Indonesia :" > </TextView>
< EditText android:id="@+id/indonesia" android:layout_width="fill_parent"
34 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
android:layout_height="wrap_content" android:text="" > </EditText>
<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text = "Jerman" > </TextView>
< EditText android:id="@+id/jerman" android:layout_width="fill_parent" android:layout_height="wrap_content" > </EditText>
</LinearLayout>
24. Buka kembali file DaftarKata.java lalu ketikan kode berikut
package net.agusharyanto.kamus;
import android.app.Activity;import android.app.AlertDialog;import android.content.ContentValues;import android.content.Context;import android.content.DialogInterface;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.ContextMenu;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.EditText;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;
public class DaftarKata extends Activity {private DatabaseHelper dbhelper;
35 | Android Database SQLITE
ANDROID FAST TRACK
private SQLiteDatabase db = null;private ListView listContent = null;private static final int EDIT_ID = Menu.FIRST +
1;private static final int DELETE_ID = Menu.FIRST +
2;private Cursor kamusCursor = null;CustomCursorAdapter adapter;
/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);dbhelper = new DatabaseHelper(this);
setContentView(R.layout.daftarkata);listContent = (ListView)
findViewById(R.id.list1);isDataListView();registerForContextMenu(listContent);
}
private void isDataListView() {
try {db = dbhelper.getWritableDatabase();
kamusCursor = db.query("kamus", new String[] { "_id", "inggris",
"indonesia", "jerman" }, "_id>0", null, null, null, null);
/* * Create an array to specify the
fields we want to display in the * list (only the
'inggris,indonesia,jerman' column in this case) */String[] from = new String[] {
"inggris", "indonesia", "jerman" };/* * and an array of the fields we want
to bind those fieiplds to (in * this case just the textView
'inggris,indonesia,jerman' from our
36 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
* new row.xml layout above) */int[] to = new int[] { R.id.inggris,
R.id.indonesia, R.id.jerman };
/* Now create a simple cursor adapter.. */
adapter = new CustomCursorAdapter(this, R.layout.row, kamusCursor,
from, to);
// listView.setAdapter(adapter);listContent.setAdapter(adapter);
} catch (Exception e) {e.printStackTrace();
} finally {
if (db != null && db.isOpen()) {// db.close();
}}
}
@Overridepublic void onDestroy() {
super.onDestroy();try {
kamusCursor.close();} catch (Exception e) {
}}
@Overridepublic void onCreateContextMenu(ContextMenu menu,
View v,ContextMenu.ContextMenuInfo menuInfo)
{menu.add(Menu.NONE, DELETE_ID, Menu.NONE,
"`Hapus").setIcon(R.drawable.ic_launcher
).setAlphabeticShortcut('e');
37 | Android Database SQLITE
ANDROID FAST TRACK
menu.add(Menu.NONE, EDIT_ID, Menu.NONE, "Edit")
.setIcon(R.drawable.ic_launcher).setAlphabeticShortcut('d');
}
@Overridepublic boolean onContextItemSelected(MenuItem
item) {switch (item.getItemId()) {case DELETE_ID:
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
.getMenuInfo();
delete(info.id);return (true);
case EDIT_ID:AdapterView.AdapterContextMenuInfo
infox = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
Cursor ckamusCursor = db.rawQuery("SELECT _ID, inggris,
indonesia, jerman "+ "FROM kamus
where _ID=" + infox.id, null);ckamusCursor.moveToFirst();
edit(infox.id, ckamusCursor.getString(1),
ckamusCursor.getString(2), ckamusCursor.getString(3));
return (true);
}
return (super.onOptionsItemSelected(item));}
private void edit(long id, String pinggris, String pindonesia,
String pjerman) {
38 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
LayoutInflater inflater = LayoutInflater.from(this);
View addView = inflater.inflate(R.layout.edit, null);
EditText edinggris = (EditText) addView.findViewById(R.id.inggris);
EditText edindonesia = (EditText) addView.findViewById(R.id.indonesia);
EditText edjerman = (EditText) addView.findViewById(R.id.jerman);
edinggris.setText(pinggris);edindonesia.setText(pindonesia);edjerman.setText(pjerman);final DialogWrapper wrapper = new
DialogWrapper(addView);final long xid = id;/* * wrapper.inggrisField.setText(pinggris); *
wrapper.indonesiaField.setTag(pindonesia) */new AlertDialog.Builder(this)
.setTitle(R.string.add_title)
.setView(addView)
.setPositiveButton(R.string.save,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
processEdit(wrapper, xid);}
}).setNegativeButton(R.string.can
cel,new
DialogInterface.OnClickListener() {public void
onClick(DialogInterface dialog,
int whichButton) {//
39 | Android Database SQLITE
ANDROID FAST TRACK
ignore, just dismiss}
}).show();}
private void delete(final long rowId) {if (rowId > 0) {
new AlertDialog.Builder(this).setTitle(R.string.delete
_title).setPositiveButton(R.stri
ng.ok,new
DialogInterface.OnClickListener() {public
void onClick(DialogInterface dialog,
int whichButton) {
processDelete(rowId);}
}).setNegativeButton(R.stri
ng.cancel,new
DialogInterface.OnClickListener() {public
void onClick(DialogInterface dialog,
int whichButton) {/
/ ignore, just dismiss}
}).show();}
}
private void processEdit(DialogWrapper wrapper, long id) {
ContentValues values = new ContentValues(2);
values.put("inggris", wrapper.getinggris());
values.put("indonesia",
40 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
wrapper.getindonesia());values.put("jerman", wrapper.getjerman());
// db.update(table, values, whereClause, whereArgs)
db.update("kamus", values, "_id=" + id, null);
kamusCursor.requery () ;}
private void processDelete(long rowId) {String[] args = { String.valueOf(rowId) };
db.delete("kamus", "_ID=?", args);kamusCursor.requery () ;
}
class DialogWrapper {EditText inggrisField = null;EditText indonesiaField = null;EditText jermanField = null;View base = null;
DialogWrapper(View base) {this.base = base;indonesiaField = (EditText)
base.findViewById(R.id.indonesia);}
String getinggris() {return
(getinggrisField().getText().toString());}
String getindonesia() {return
(getindonesiaField().getText().toString());}
String getjerman() {return
(getjermanField().getText().toString());}
private EditText getinggrisField() {
41 | Android Database SQLITE
ANDROID FAST TRACK
if (inggrisField == null) {inggrisField = (EditText)
base.findViewById(R.id.inggris);}
return (inggrisField);}
private EditText getindonesiaField() {if (indonesiaField == null) {
indonesiaField = (EditText) base.findViewById(R.id.indonesia);
}
return (indonesiaField);}
private EditText getjermanField() {if (jermanField == null) {
jermanField = (EditText) base.findViewById(R.id.jerman);
}
return (jermanField);}
}
protected class CustomCursorAdapter extends SimpleCursorAdapter {
private int layout;private LayoutInflater inflater;private Context context;
public CustomCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {super (context, layout, c, from, to); this.layout = layout;this.context = context;inflater =
LayoutInflater.from(context);
}
@Override
42 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View v = inflater.inflate(R.layout.row, parent, false);
return v;}
@Overridepublic void bindView(View v, Context
context, Cursor c) {// 1 is the column where you're
getting your data fromString inggris = c.getString(1);String jerman = c.getString(3);String indonesia = c.getString(2);
/** * Next set the name of the entry. */TextView name_text = (TextView)
v.findViewById(R.id.inggris);TextView des_text = (TextView)
v.findViewById(R.id.jerman);TextView id_text = (TextView)
v.findViewById(R.id.indonesia);des_text.setText(jerman);id_text.setText(indonesia);
if (name_text != null) {name_text.setText(inggris);
}}
}}
43 | Android Database SQLITE
ANDROID FAST TRACK
25. Sekarang mari kita run projectnya
Lakukan skenario seperti ini.
• Pilih salah satu data lalu tekan yang lama lalu Edit, akan muncul
jendela edit.
• Pilih salah satu data lalu tekan yang lama pada data tersebut akan
muncul context menu, pilihlah hapus
Hore, kita telah berhasil membuat aplikasi database sqlite pada an
droid yang didalamanya sudah mencakup fungsi Create Read Update
Delete (CRUD).
44 | Android Database SQLITE
ANDROID FAST TRACK AGUS HARYANTO
45 | Android Database SQLITE
PENUTUP
SEMANGAT
Setelah memnyelesaikan materi yang ada dibuku ini, berarti kita sudah punya modal dasar untuk membuat aplikasi android sendiri.
Disini kita sudah mempelajari tentang
• Dasar pembuatan project android
• Dasar Layout dan viewnya
• Aplikasi Android CRUD SQLite (Kamus)
• Aplikasi Peta dengan Android Googlemaps API V2 (PetaLokasi)
• Aplikasi CRUD PHP MySQL (Smartphone Price)
Ilmu itu harus sering dilatih agar semakin mantap penguasaanya dan kita semkin produktif. Tanpa sering latihan janganlah kita bermimpi
jadi programmer hebat dan produktif. Jadi harus semangat.
SEMINAR WORKSHOP ANDROID
Untuk kampus atau sekolah yang berminat mengadakan seminar
atau workshop android atau lainnya bisa hubungi saya di email [email protected] ,twitter @agus_inovator atau di
08551000444 / 089617122766. Khusus untuk luar kota biaya
transportasi dan akomodasi ditanggung penyelenggara acara.
5
ANDROID FAST TRACK
REFERENSI
Untuk buku Android Fast Track ini, saya menggunakan referensi dari
– http://developerandroid.com
– http://stackoverflow.com
– http://vogella.com
– http://mobile.tutplus.com
– Beginning Android 4 Application Development – Wei Meng Lee
48 | Penutup