• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Android Fast Track - Database SQLite (Kamus Tiga Bahasa)
 

Android Fast Track - Database SQLite (Kamus Tiga Bahasa)

on

  • 6,548 views

Tutorial Android for understanding and implement SQLite in Android application developement

Tutorial Android for understanding and implement SQLite in Android application developement

Statistics

Views

Total Views
6,548
Views on SlideShare
3,569
Embed Views
2,979

Actions

Likes
5
Downloads
733
Comments
5

3 Embeds 2,979

http://agusharyanto.net 2976
https://www.google.com 2
https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

15 of 5 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • mkasi mas
    Are you sure you want to
    Your message goes here
    Processing…
  • Aslm. mau belajar buat apps,ijin unduh.
    Are you sure you want to
    Your message goes here
    Processing…
  • cara downloadnya gimana ini?
    Are you sure you want to
    Your message goes here
    Processing…
  • thanks mas Agus... izin download yo...
    Are you sure you want to
    Your message goes here
    Processing…
  • ijin unduh ya
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Android Fast Track - Database SQLite (Kamus Tiga Bahasa) Android Fast Track - Database SQLite (Kamus Tiga Bahasa) Document Transcript

    • ANDROID FAST TRACK
    • Tentang Penulis Agus Haryanto, MKOM http://agusharyanto.net @agus_inovator agus.superwriter@gmail.com 08551000444 / 089617122766 Juara 2 Indosat M2 Android Application Contest Juara 1 BBDEVID Challenge Blackberry Application (Webworks) Juara Harapan Kompetisi Android T-Market (Telesindo)
    • ANDROID FASTANDROID 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 S Preface...........................................................................................vii Pengenalan Android ........................................................................9 Kenalan dengan Android.............................................................9 Instalasi Android.......................................................................10 Project Android pertama...........................................................11 Pengenalan User Interface ............................................................19 Mengenal Layout......................................................................19 Mengenal View.........................................................................32 Android Database SQLITE.............................................................43 SQLITE......................................................................................43 Kamus Tiga Bahasa (CRUD)......................................................44 Android Google Map......................................................................81 Menampilkan Data GPS............................................................81 Menampilkan Map pada Android...............................................89 Menampilkan Direction pada Map ..........................................102 Android PHP MySQL.....................................................................115 CRUD Android PHP Mysql........................................................115 Penutup.......................................................................................141 Semangat...............................................................................141 Seminar Workshop Android.....................................................141 Referensi................................................................................142 v | Android Fast Track
    • P R E F A 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 agus.superwriter@gmail.com. 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 agus.superwriter@gmail.com ,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. SQLITE Seperti 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 TIGA 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 gun­ akan 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 database public DatabaseHelper(Context context) { 11 | Android Database SQLITE
    • ANDROID FAST TRACK super(context, DATABASE_NAME, null, 1); } //method createTable untuk membuat table kamus public 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); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub createTable(db); generateData(db); } @Override public 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/andr oid" 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 berikut package 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); } @Override public 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/andr oid" 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/andr oid" 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. */ @Override public 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(); } } } @Override public 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); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { Log.d("NewView", "*****xxx"); View v = inflater.inflate(R.layout.row, parent, false); return v; } @Override public void bindView(View v, Context context, Cursor c) { // 1 is the column where you're getting your data from String 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/andr oid" 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/andr oid" 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(); } } @Override public 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/andr oid" 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 berikut package 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 list this.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 dklik Object o = this.getListAdapter().getItem(position); String pilihan = o.toString(); // Menampilkan hasil pilihan menu dalam bentuk Toast tampilkanPilihan(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/andr oid" 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/andr oid" 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. */ @Override public 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(); } } } @Override public void onDestroy() { super.onDestroy(); try { kamusCursor.close(); } catch (Exception e) { } } @Override public 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'); } @Override public 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.sav e, 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; } @Override public void bindView(View v, Context context, Cursor c) { // 1 is the column where you're getting your data from String 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 agus.superwriter@gmail.com ,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