45
ANDROID FAST TRACK

Materi Android Fast Track Db Sqlite

  • Upload
    mukidin

  • View
    263

  • Download
    0

Embed Size (px)

DESCRIPTION

Materi Android Fast Track Db Sqlite

Citation preview

Page 1: Materi Android Fast Track Db Sqlite

ANDROID FAST TRACK

Page 2: Materi Android Fast Track Db Sqlite

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)

Page 3: Materi Android Fast Track Db Sqlite

ANDROID FAST ANDROID FAST

TRACKTRACK

A G U S H A RYA N T OA G U S H A RYA N T O

Page 4: Materi Android Fast Track Db Sqlite
Page 5: Materi Android Fast Track Db Sqlite

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

Page 6: Materi Android Fast Track Db Sqlite

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

Page 7: Materi Android Fast Track Db Sqlite

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

Page 8: Materi Android Fast Track Db Sqlite

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

Page 9: Materi Android Fast Track Db 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

Page 10: Materi Android Fast Track Db 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

Page 11: Materi Android Fast Track Db 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

Page 12: Materi Android Fast Track Db 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

Page 13: Materi Android Fast Track Db 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

Page 14: Materi Android Fast Track Db 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

Page 15: Materi Android Fast Track Db 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

Page 16: Materi Android Fast Track Db 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

Page 17: Materi Android Fast Track Db 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

Page 18: Materi Android Fast Track Db 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

Page 19: Materi Android Fast Track Db 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

Page 20: Materi Android Fast Track Db 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

Page 21: Materi Android Fast Track Db 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

Page 22: Materi Android Fast Track Db 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

Page 23: Materi Android Fast Track Db 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

Page 24: Materi Android Fast Track Db 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

Page 25: Materi Android Fast Track Db 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

Page 26: Materi Android Fast Track Db 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

Page 27: Materi Android Fast Track Db 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

Page 28: Materi Android Fast Track Db 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

Page 29: Materi Android Fast Track Db 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

Page 30: Materi Android Fast Track Db 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

Page 31: Materi Android Fast Track Db 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

Page 32: Materi Android Fast Track Db 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

Page 33: Materi Android Fast Track Db 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

Page 34: Materi Android Fast Track Db 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

Page 35: Materi Android Fast Track Db 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

Page 36: Materi Android Fast Track Db 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

Page 37: Materi Android Fast Track Db 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

Page 38: Materi Android Fast Track Db 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

Page 39: Materi Android Fast Track Db 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

Page 40: Materi Android Fast Track Db 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

Page 41: Materi Android Fast Track Db 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

Page 42: Materi Android Fast Track Db 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

Page 43: Materi Android Fast Track Db Sqlite

ANDROID FAST TRACK AGUS HARYANTO

45 | Android Database SQLITE

Page 44: Materi Android Fast Track Db 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

Page 45: Materi Android Fast Track Db Sqlite

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