SlideShare a Scribd company logo
1 of 45
Download to read offline
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

More Related Content

What's hot

Aplikasi Cuaca dan Quiz Android
Aplikasi Cuaca dan Quiz AndroidAplikasi Cuaca dan Quiz Android
Aplikasi Cuaca dan Quiz Androidrivalbamen
 
Live coding andorid
Live coding andoridLive coding andorid
Live coding andoridArif Huda
 
Pemrograman Dasar Android
Pemrograman Dasar AndroidPemrograman Dasar Android
Pemrograman Dasar AndroidAbas Djumadi
 
Modul praktikum 2 - Android Sudaryatno
Modul praktikum 2 - Android SudaryatnoModul praktikum 2 - Android Sudaryatno
Modul praktikum 2 - Android SudaryatnoYatno Sudar
 
Pelatihan j query
Pelatihan j queryPelatihan j query
Pelatihan j queryoratmangun
 
17. aplikasi crud java sederhana menggunakan database my sql
17. aplikasi crud java sederhana menggunakan database my sql17. aplikasi crud java sederhana menggunakan database my sql
17. aplikasi crud java sederhana menggunakan database my sqlSaprudin Eskom
 
17. aplikasi crud java sederhana menggunakan database my sql
17. aplikasi crud java sederhana menggunakan database my sql17. aplikasi crud java sederhana menggunakan database my sql
17. aplikasi crud java sederhana menggunakan database my sqlSaprudin Eskom
 
Modul praktikum 5 - Android Sudaryatno
Modul praktikum 5 - Android SudaryatnoModul praktikum 5 - Android Sudaryatno
Modul praktikum 5 - Android SudaryatnoYatno Sudar
 
Ppt pengenalan jquery
Ppt pengenalan jqueryPpt pengenalan jquery
Ppt pengenalan jquerymutia902
 
Jquery ppt
Jquery pptJquery ppt
Jquery ppt044249
 
Ansanwan form sederhana php
Ansanwan form sederhana phpAnsanwan form sederhana php
Ansanwan form sederhana phpSigit Ariyanto
 
Modul praktikum 3 - Android Sudaryatno
Modul praktikum 3 - Android SudaryatnoModul praktikum 3 - Android Sudaryatno
Modul praktikum 3 - Android SudaryatnoYatno Sudar
 
Menghitung luas persegi panjang dengan android
Menghitung luas persegi panjang dengan androidMenghitung luas persegi panjang dengan android
Menghitung luas persegi panjang dengan androidAgus Haryanto
 
Modul praktikum 7 - Android Sudaryatno
Modul praktikum 7 - Android SudaryatnoModul praktikum 7 - Android Sudaryatno
Modul praktikum 7 - Android SudaryatnoYatno Sudar
 
Modul praktikum 11 - Android Sudaryatno
Modul praktikum 11 - Android SudaryatnoModul praktikum 11 - Android Sudaryatno
Modul praktikum 11 - Android SudaryatnoYatno Sudar
 
E commerce dengan php mysql.docx
E commerce dengan php mysql.docxE commerce dengan php mysql.docx
E commerce dengan php mysql.docxCandra Adi Putra
 
Membuat aplikasi sederhana menggunakan java
Membuat aplikasi sederhana menggunakan javaMembuat aplikasi sederhana menggunakan java
Membuat aplikasi sederhana menggunakan javaEko Kurniawan Khannedy
 
Modul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android SudaryatnoModul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android SudaryatnoYatno Sudar
 

What's hot (20)

Aplikasi Cuaca dan Quiz Android
Aplikasi Cuaca dan Quiz AndroidAplikasi Cuaca dan Quiz Android
Aplikasi Cuaca dan Quiz Android
 
JQuery
JQueryJQuery
JQuery
 
Live coding andorid
Live coding andoridLive coding andorid
Live coding andorid
 
Pemrograman Dasar Android
Pemrograman Dasar AndroidPemrograman Dasar Android
Pemrograman Dasar Android
 
Modul praktikum 2 - Android Sudaryatno
Modul praktikum 2 - Android SudaryatnoModul praktikum 2 - Android Sudaryatno
Modul praktikum 2 - Android Sudaryatno
 
My sql dan java database connectivity
My sql dan java database connectivityMy sql dan java database connectivity
My sql dan java database connectivity
 
Pelatihan j query
Pelatihan j queryPelatihan j query
Pelatihan j query
 
17. aplikasi crud java sederhana menggunakan database my sql
17. aplikasi crud java sederhana menggunakan database my sql17. aplikasi crud java sederhana menggunakan database my sql
17. aplikasi crud java sederhana menggunakan database my sql
 
17. aplikasi crud java sederhana menggunakan database my sql
17. aplikasi crud java sederhana menggunakan database my sql17. aplikasi crud java sederhana menggunakan database my sql
17. aplikasi crud java sederhana menggunakan database my sql
 
Modul praktikum 5 - Android Sudaryatno
Modul praktikum 5 - Android SudaryatnoModul praktikum 5 - Android Sudaryatno
Modul praktikum 5 - Android Sudaryatno
 
Ppt pengenalan jquery
Ppt pengenalan jqueryPpt pengenalan jquery
Ppt pengenalan jquery
 
Jquery ppt
Jquery pptJquery ppt
Jquery ppt
 
Ansanwan form sederhana php
Ansanwan form sederhana phpAnsanwan form sederhana php
Ansanwan form sederhana php
 
Modul praktikum 3 - Android Sudaryatno
Modul praktikum 3 - Android SudaryatnoModul praktikum 3 - Android Sudaryatno
Modul praktikum 3 - Android Sudaryatno
 
Menghitung luas persegi panjang dengan android
Menghitung luas persegi panjang dengan androidMenghitung luas persegi panjang dengan android
Menghitung luas persegi panjang dengan android
 
Modul praktikum 7 - Android Sudaryatno
Modul praktikum 7 - Android SudaryatnoModul praktikum 7 - Android Sudaryatno
Modul praktikum 7 - Android Sudaryatno
 
Modul praktikum 11 - Android Sudaryatno
Modul praktikum 11 - Android SudaryatnoModul praktikum 11 - Android Sudaryatno
Modul praktikum 11 - Android Sudaryatno
 
E commerce dengan php mysql.docx
E commerce dengan php mysql.docxE commerce dengan php mysql.docx
E commerce dengan php mysql.docx
 
Membuat aplikasi sederhana menggunakan java
Membuat aplikasi sederhana menggunakan javaMembuat aplikasi sederhana menggunakan java
Membuat aplikasi sederhana menggunakan java
 
Modul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android SudaryatnoModul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android Sudaryatno
 

Viewers also liked

Belajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data MahasiswaBelajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data MahasiswaAgus Haryanto
 
Kenalan Dengan Firebase Android
Kenalan Dengan Firebase AndroidKenalan Dengan Firebase Android
Kenalan Dengan Firebase AndroidAgus Haryanto
 
Tutorial Android Membuat Aplikasi senter Flash light
Tutorial Android Membuat Aplikasi senter Flash lightTutorial Android Membuat Aplikasi senter Flash light
Tutorial Android Membuat Aplikasi senter Flash lightAgus Haryanto
 
Android Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySqlAndroid Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySqlAgus Haryanto
 
Belajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android SederhanaBelajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android SederhanaAgus Haryanto
 
Android Sliding Menu dengan Navigation Drawer
Android Sliding Menu dengan Navigation DrawerAndroid Sliding Menu dengan Navigation Drawer
Android Sliding Menu dengan Navigation DrawerAgus Haryanto
 
Belajar Android Studio Memberi Efek animasi pada Button
Belajar Android Studio Memberi Efek animasi pada ButtonBelajar Android Studio Memberi Efek animasi pada Button
Belajar Android Studio Memberi Efek animasi pada ButtonAgus Haryanto
 
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card View
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card ViewBelajar Android Studio Material Design Penggunaan RecyclerView dan Card View
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card ViewAgus Haryanto
 
Seminar Android as your Smart Future
Seminar Android as your Smart FutureSeminar Android as your Smart Future
Seminar Android as your Smart FutureAgus Haryanto
 
Android Radio streaming
Android Radio streamingAndroid Radio streaming
Android Radio streamingAgus Haryanto
 
Panduan Instalasi Android Studio
Panduan Instalasi Android StudioPanduan Instalasi Android Studio
Panduan Instalasi Android StudioAgus Haryanto
 
Ebook tutorial pemrograman android
Ebook tutorial pemrograman android Ebook tutorial pemrograman android
Ebook tutorial pemrograman android Candra Adi Putra
 
Laporan praktikum modul 4
Laporan praktikum modul 4Laporan praktikum modul 4
Laporan praktikum modul 4Devi Apriansyah
 
Laporan pratikum v mulmet
Laporan pratikum v mulmetLaporan pratikum v mulmet
Laporan pratikum v mulmetrahmi wahyuni
 
Laporan praktikum ii visual
Laporan praktikum ii visualLaporan praktikum ii visual
Laporan praktikum ii visualrahmi wahyuni
 
Modul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android SudaryatnoModul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android SudaryatnoYatno Sudar
 
Modul praktikum 15 - Android Sudaryatno
Modul praktikum 15 - Android SudaryatnoModul praktikum 15 - Android Sudaryatno
Modul praktikum 15 - Android SudaryatnoYatno Sudar
 
MVVM Core By GITS-Indonesia
MVVM Core By GITS-IndonesiaMVVM Core By GITS-Indonesia
MVVM Core By GITS-IndonesiaYatno Sudar
 
Modul praktikum 14 - Android Sudaryatno
Modul praktikum 14 - Android SudaryatnoModul praktikum 14 - Android Sudaryatno
Modul praktikum 14 - Android SudaryatnoYatno Sudar
 

Viewers also liked (20)

Belajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data MahasiswaBelajar Android Studio CRUD Data Mahasiswa
Belajar Android Studio CRUD Data Mahasiswa
 
Kenalan Dengan Firebase Android
Kenalan Dengan Firebase AndroidKenalan Dengan Firebase Android
Kenalan Dengan Firebase Android
 
Tutorial Android Membuat Aplikasi senter Flash light
Tutorial Android Membuat Aplikasi senter Flash lightTutorial Android Membuat Aplikasi senter Flash light
Tutorial Android Membuat Aplikasi senter Flash light
 
Android Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySqlAndroid Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySql
 
Belajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android SederhanaBelajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android Sederhana
 
Android Sliding Menu dengan Navigation Drawer
Android Sliding Menu dengan Navigation DrawerAndroid Sliding Menu dengan Navigation Drawer
Android Sliding Menu dengan Navigation Drawer
 
Belajar Android Studio Memberi Efek animasi pada Button
Belajar Android Studio Memberi Efek animasi pada ButtonBelajar Android Studio Memberi Efek animasi pada Button
Belajar Android Studio Memberi Efek animasi pada Button
 
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card View
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card ViewBelajar Android Studio Material Design Penggunaan RecyclerView dan Card View
Belajar Android Studio Material Design Penggunaan RecyclerView dan Card View
 
Seminar Android as your Smart Future
Seminar Android as your Smart FutureSeminar Android as your Smart Future
Seminar Android as your Smart Future
 
Android Radio streaming
Android Radio streamingAndroid Radio streaming
Android Radio streaming
 
Panduan Instalasi Android Studio
Panduan Instalasi Android StudioPanduan Instalasi Android Studio
Panduan Instalasi Android Studio
 
Ebook tutorial pemrograman android
Ebook tutorial pemrograman android Ebook tutorial pemrograman android
Ebook tutorial pemrograman android
 
Sqlite Multiple Table
Sqlite Multiple TableSqlite Multiple Table
Sqlite Multiple Table
 
Laporan praktikum modul 4
Laporan praktikum modul 4Laporan praktikum modul 4
Laporan praktikum modul 4
 
Laporan pratikum v mulmet
Laporan pratikum v mulmetLaporan pratikum v mulmet
Laporan pratikum v mulmet
 
Laporan praktikum ii visual
Laporan praktikum ii visualLaporan praktikum ii visual
Laporan praktikum ii visual
 
Modul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android SudaryatnoModul praktikum 16 - Android Sudaryatno
Modul praktikum 16 - Android Sudaryatno
 
Modul praktikum 15 - Android Sudaryatno
Modul praktikum 15 - Android SudaryatnoModul praktikum 15 - Android Sudaryatno
Modul praktikum 15 - Android Sudaryatno
 
MVVM Core By GITS-Indonesia
MVVM Core By GITS-IndonesiaMVVM Core By GITS-Indonesia
MVVM Core By GITS-Indonesia
 
Modul praktikum 14 - Android Sudaryatno
Modul praktikum 14 - Android SudaryatnoModul praktikum 14 - Android Sudaryatno
Modul praktikum 14 - Android Sudaryatno
 

Similar to KAMUS TIGA BAHASA

Program database sederhana di android
Program database sederhana di androidProgram database sederhana di android
Program database sederhana di androidInto Setiawan
 
9.android&sq lite
9.android&sq lite9.android&sq lite
9.android&sq liteZhank's Cjr
 
F 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriF 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriSyarif Fudin
 
Aksi penyerangan SQL dan penjegahan
Aksi penyerangan SQL dan penjegahanAksi penyerangan SQL dan penjegahan
Aksi penyerangan SQL dan penjegahanFadlil Mantoeng
 
Chapter12(basis data)
Chapter12(basis data)Chapter12(basis data)
Chapter12(basis data)Irmha Surya
 
Menggunakan database di android
Menggunakan database di androidMenggunakan database di android
Menggunakan database di androidInto Setiawan
 
Tugas Pw [22]
Tugas Pw [22]Tugas Pw [22]
Tugas Pw [22]qincuw
 
Tugas pw [22]
Tugas pw [22]Tugas pw [22]
Tugas pw [22]qincuw
 
PELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TIPELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TIBrader Kampus
 
Modul praktikum basis data
Modul praktikum basis dataModul praktikum basis data
Modul praktikum basis datahairul anwar
 
Sekilas Tentang MySQL
Sekilas Tentang MySQLSekilas Tentang MySQL
Sekilas Tentang MySQLguestad850e
 
PEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASEPEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASERäjù GùÑáwàn
 
Tutorial web site aida dan jesika
Tutorial web site aida dan jesikaTutorial web site aida dan jesika
Tutorial web site aida dan jesikaRCH_98
 
Modul-SistemBasisData-1.pdf
Modul-SistemBasisData-1.pdfModul-SistemBasisData-1.pdf
Modul-SistemBasisData-1.pdfAkoyBoys1
 

Similar to KAMUS TIGA BAHASA (20)

Program database sederhana di android
Program database sederhana di androidProgram database sederhana di android
Program database sederhana di android
 
9.android&sq lite
9.android&sq lite9.android&sq lite
9.android&sq lite
 
Mysql
MysqlMysql
Mysql
 
Makalah database
Makalah databaseMakalah database
Makalah database
 
F 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriF 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajri
 
Aksi penyerangan SQL dan penjegahan
Aksi penyerangan SQL dan penjegahanAksi penyerangan SQL dan penjegahan
Aksi penyerangan SQL dan penjegahan
 
Chapter12(basis data)
Chapter12(basis data)Chapter12(basis data)
Chapter12(basis data)
 
Tugas SIMDIG Kelompok 9
Tugas SIMDIG Kelompok 9Tugas SIMDIG Kelompok 9
Tugas SIMDIG Kelompok 9
 
Menggunakan database di android
Menggunakan database di androidMenggunakan database di android
Menggunakan database di android
 
Tugas Pw [22]
Tugas Pw [22]Tugas Pw [22]
Tugas Pw [22]
 
Tugas pw [22]
Tugas pw [22]Tugas pw [22]
Tugas pw [22]
 
PELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TIPELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TI
 
Modul praktikum basis data
Modul praktikum basis dataModul praktikum basis data
Modul praktikum basis data
 
Sekilas Tentang MySQL
Sekilas Tentang MySQLSekilas Tentang MySQL
Sekilas Tentang MySQL
 
Sekilas Tentang MySQL
Sekilas Tentang MySQLSekilas Tentang MySQL
Sekilas Tentang MySQL
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
PEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASEPEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASE
 
Tutorial web site aida dan jesika
Tutorial web site aida dan jesikaTutorial web site aida dan jesika
Tutorial web site aida dan jesika
 
7408030017 m
7408030017 m7408030017 m
7408030017 m
 
Modul-SistemBasisData-1.pdf
Modul-SistemBasisData-1.pdfModul-SistemBasisData-1.pdf
Modul-SistemBasisData-1.pdf
 

Recently uploaded

Modul Ajar IPA Kelas 7 Fase D Kurikulum Merdeka
Modul Ajar IPA Kelas 7 Fase D Kurikulum MerdekaModul Ajar IPA Kelas 7 Fase D Kurikulum Merdeka
Modul Ajar IPA Kelas 7 Fase D Kurikulum MerdekaAbdiera
 
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxKeberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxLeniMawarti1
 
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptxSBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptxFardanassegaf
 
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptx
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptxKualifikasi dan Kompetensi Guru Profesi Kependidikan .pptx
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptxSelviPanggua1
 
Modul Ajar Bahasa Inggris Kelas 2 Fase A [abdiera.com]
Modul Ajar Bahasa Inggris Kelas 2 Fase A [abdiera.com]Modul Ajar Bahasa Inggris Kelas 2 Fase A [abdiera.com]
Modul Ajar Bahasa Inggris Kelas 2 Fase A [abdiera.com]Abdiera
 
Sejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptSejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptssuser940815
 
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdf
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdfPerbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdf
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdfAgungNugroho932694
 
Aksi Nyata PERENCANAAN BERBASIS DATA.pptx
Aksi Nyata PERENCANAAN BERBASIS DATA.pptxAksi Nyata PERENCANAAN BERBASIS DATA.pptx
Aksi Nyata PERENCANAAN BERBASIS DATA.pptxdonny761155
 
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxKeberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxLeniMawarti1
 
Asi Eksklusif Dong - buku untuk para ayah - Robin Lim
Asi Eksklusif Dong - buku untuk para ayah - Robin LimAsi Eksklusif Dong - buku untuk para ayah - Robin Lim
Asi Eksklusif Dong - buku untuk para ayah - Robin LimNodd Nittong
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfWahyudinST
 
Gandum & Lalang (Matius......13_24-30).pptx
Gandum & Lalang (Matius......13_24-30).pptxGandum & Lalang (Matius......13_24-30).pptx
Gandum & Lalang (Matius......13_24-30).pptxHansTobing
 
Elemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptxElemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptxGyaCahyaPratiwi
 
PLaN & INTERVENSI untuk sekolah yang memerlukan
PLaN & INTERVENSI untuk sekolah yang memerlukanPLaN & INTERVENSI untuk sekolah yang memerlukan
PLaN & INTERVENSI untuk sekolah yang memerlukanssuserc81826
 
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptx
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptxUNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptx
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptxFranxisca Kurniawati
 
Diagram Fryer Pembelajaran Berdifferensiasi
Diagram Fryer Pembelajaran BerdifferensiasiDiagram Fryer Pembelajaran Berdifferensiasi
Diagram Fryer Pembelajaran BerdifferensiasiOviLarassaty1
 
RPP PERBAIKAN UNTUK SIMULASI (Recovered).docx
RPP PERBAIKAN UNTUK SIMULASI (Recovered).docxRPP PERBAIKAN UNTUK SIMULASI (Recovered).docx
RPP PERBAIKAN UNTUK SIMULASI (Recovered).docxSyifaDzikron
 
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdf
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdfPPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdf
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdfSBMNessyaPutriPaulan
 
Silabus Mata Pelajaran Biologi SMA Kelas X.doc
Silabus Mata Pelajaran Biologi SMA Kelas X.docSilabus Mata Pelajaran Biologi SMA Kelas X.doc
Silabus Mata Pelajaran Biologi SMA Kelas X.docNurulAiniFirdasari1
 
Modul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum MerdekaModul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum MerdekaAbdiera
 

Recently uploaded (20)

Modul Ajar IPA Kelas 7 Fase D Kurikulum Merdeka
Modul Ajar IPA Kelas 7 Fase D Kurikulum MerdekaModul Ajar IPA Kelas 7 Fase D Kurikulum Merdeka
Modul Ajar IPA Kelas 7 Fase D Kurikulum Merdeka
 
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxKeberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
 
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptxSBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
SBM_Kelompok-7_Alat dan Media Pembelajaran.pptx
 
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptx
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptxKualifikasi dan Kompetensi Guru Profesi Kependidikan .pptx
Kualifikasi dan Kompetensi Guru Profesi Kependidikan .pptx
 
Modul Ajar Bahasa Inggris Kelas 2 Fase A [abdiera.com]
Modul Ajar Bahasa Inggris Kelas 2 Fase A [abdiera.com]Modul Ajar Bahasa Inggris Kelas 2 Fase A [abdiera.com]
Modul Ajar Bahasa Inggris Kelas 2 Fase A [abdiera.com]
 
Sejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptSejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.ppt
 
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdf
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdfPerbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdf
Perbaikan ekonomi zaman Habibie (Offering A - 4-6) Pertemuan - 10.pdf
 
Aksi Nyata PERENCANAAN BERBASIS DATA.pptx
Aksi Nyata PERENCANAAN BERBASIS DATA.pptxAksi Nyata PERENCANAAN BERBASIS DATA.pptx
Aksi Nyata PERENCANAAN BERBASIS DATA.pptx
 
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxKeberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
 
Asi Eksklusif Dong - buku untuk para ayah - Robin Lim
Asi Eksklusif Dong - buku untuk para ayah - Robin LimAsi Eksklusif Dong - buku untuk para ayah - Robin Lim
Asi Eksklusif Dong - buku untuk para ayah - Robin Lim
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdf
 
Gandum & Lalang (Matius......13_24-30).pptx
Gandum & Lalang (Matius......13_24-30).pptxGandum & Lalang (Matius......13_24-30).pptx
Gandum & Lalang (Matius......13_24-30).pptx
 
Elemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptxElemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptx
 
PLaN & INTERVENSI untuk sekolah yang memerlukan
PLaN & INTERVENSI untuk sekolah yang memerlukanPLaN & INTERVENSI untuk sekolah yang memerlukan
PLaN & INTERVENSI untuk sekolah yang memerlukan
 
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptx
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptxUNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptx
UNSUR - UNSUR, LUAS, KELILING LINGKARAN.pptx
 
Diagram Fryer Pembelajaran Berdifferensiasi
Diagram Fryer Pembelajaran BerdifferensiasiDiagram Fryer Pembelajaran Berdifferensiasi
Diagram Fryer Pembelajaran Berdifferensiasi
 
RPP PERBAIKAN UNTUK SIMULASI (Recovered).docx
RPP PERBAIKAN UNTUK SIMULASI (Recovered).docxRPP PERBAIKAN UNTUK SIMULASI (Recovered).docx
RPP PERBAIKAN UNTUK SIMULASI (Recovered).docx
 
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdf
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdfPPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdf
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdf
 
Silabus Mata Pelajaran Biologi SMA Kelas X.doc
Silabus Mata Pelajaran Biologi SMA Kelas X.docSilabus Mata Pelajaran Biologi SMA Kelas X.doc
Silabus Mata Pelajaran Biologi SMA Kelas X.doc
 
Modul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum MerdekaModul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Informatika Kelas 11 Fase F Kurikulum Merdeka
 

KAMUS TIGA BAHASA

  • 2. 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)
  • 3. ANDROID FASTANDROID FAST TRACKTRACK A G U S H A RYA N T OA G U S H A RYA N T O
  • 4.
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. 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
  • 34. 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
  • 35. 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
  • 36. 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
  • 37. 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
  • 38. 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
  • 39. 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
  • 40. 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
  • 41. 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
  • 42. 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
  • 43. ANDROID FAST TRACK AGUS HARYANTO 45 | Android Database SQLITE
  • 44. 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
  • 45. 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