PERTEMUAN 1
Bagian ini akan menjelaskan tentang :
Konsep umum android
Proses instalasi Eclipse
Membuat Program Pertama
...
PENGENALAN ANDROID
Android adalah sistem operasi untuk telepon seluler yang berbasis Linux. Android
menyediakan platform yang bersifat open source bagi para pengembang untuk
menciptakan sebuah aplikasi.Awalnya, Google Inc. mengakuisi Android Inc. yang
mengembangkan software untuk ponsel yang berada di Palo Alto, California Amerika
Serikat. Kemudian untuk mengembangkan Android, dibentuklah Open Handset Alliance,
yaitu konsorsium dari 34 perusahaan hardware, software, dan telekomunikasi, termasuk
Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, dan Nvidia.
Sebuah Activity biasanya ditampilkan dalam satu screen sebagai bagian komponen
dari View (yang terdiri dari komponen UI, widget atau control), yang bertugas melakukan
interaksi dengan user untuk melakukan sebuah task tunggal (misalnya, melihat informasi,
mengedit data, atau memasukkan data).
Sebuah aplikasi Android biasanya memiliki satu atau lebih Activity. Salah satu
Activity ditandai sebagai startup activity, yang pada gilirannya memulai activity
berikutnya, melalui sebuah intent. Untuk membuat suatu activity, kita melakukan extend
terhadap class android.app.Activity, dan melakukan override beberapa method, khususnya
method OnCreate().
Kita bisa mengatur konten view dari activity secara bahasa pemrograman java atau juga
bisa melalui kode layout file XML
Daur hidup sebuah activity diatur melalui method call-back, yang di definisikan pada class
dasar Activity :
Gambar 1.1 : Siklus Hidup Android
Untuk lebih memahami siklus hidup android adalah dengan memulai aplikasi pertama
yang berada pada bagian 1.
INSTALASI ECLIPSE, JDK, ANDROID DEVELOPMENT TOOLS
Sebelum membangun aplikasi android, diperlukan tiga buah file yang harus diinstal.
Ketiga buah file tersebut dapat diunduh di
http://developer.android.com/sdk/index.html
1. Eclipse
2. ADT Plugin
3. SDK Manager
Ketiga file tersebut sudah include didalam satu folder. Saat mendownload silahkan
sesuaikan dengan tipe sistem operasi komputer. Kemudian install JDK (Java Development
Kit) minimal versi 7 dan install di komputer. Berikut ini adalah langkah-langkah instalasi :
Gambar 1.2 : instalasi Java Development Kit
2.
Selanjutnya kita akan membuat Android Virtual Device. Masuk ke folder
adt-bundle, kemudian klik SDK manager.exe. jika terdapat pemberitahuan error,
abaikan saja.
Gambar 1.3 : Tampilan SDK Manager
3.
Pilih Tools lalu Manage AVDs
Gambar 1.4 : Proses Manajemen AVD
4. Selanjutnya adalah proses konfigurasi emulator android, klik New
Gambar 1.5 : membuat Android Virtual Device
Gambar 1.6 : konfigurasi AVD
6.
Setelah itu, klik start untuk menjalankan emulator yang telah dibuat. Android
Device Virtual telah selesai dibuat.
Gambar 1.7 : menjalankan AVD
PROGRAM PERTAMA
Pada pertemuan pertama. Kita akan membuat program awal sebagai pemanasan. Berikut
ini langkah-langkah pembuatan aplikasi android pertama.
1.
Jalankan Eclipse, Kemudian Pilih File > New > Android Application Project
Gambar 1.7 : membuat project pertama
2.
Kemudian isi seperti gambar 1.2.
Gambar 1.8 : memberi nama project
Gambar 1.9 : hierarki package
4. Ganti kode di main.xml seperti dibawah ini.
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
xmlns:tools
=
"http://schemas.android.com/tools"
android:id
=
"@+id/LinearLayout1"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:orientation
=
"vertical"
tools:context
=
".Main"
>
<
TextView
android:id
=
"@+id/txt1"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:gravity
=
"center|center_vertical"
android:text
=
"@string/text1"
android:textAppearance
=
"?android:attr/textAppearanceLarge"
/>
<
Button
android:id
=
"@+id/btn1"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:text
=
"@string/button1"
/>
</
LinearLayout
>
Tampilan pada Graphical Layout seperti dibawah ini
Gambar 1.10 : tampilan graphical layout
5. Kemudian ubah kode di activity main.java seperti dibawah ini.
package com.example.projectpertama;
import android.os.Bundle;
import android.app.Activity;
public class Main extends Activity implements OnClickListener {
TextView txt1;
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txt1 = (TextView) findViewById(R.id.txt1);
btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
txt1.setText("Mantep kan");
}
}
7.
Aplikasi dapat didownload langsung ke perangkat android. File ProjectPertama.apk
terletak di folder ProjectPertama/bin.
PERTEMUAN 2
Bagian ini akan menjelaskan tentang :
Menampilkan gambar
Membuat dialog interaktif dengan toast, list, dan alert
...
MEMBUAT TOAST, LIST DIALOG, ALERT DIALOG
Pada pertemuan kedua kita akan membuat kotak dialog sebagai sarana interaktif antara
aplikasi dengan pengguna. Pada aplikasi ini kita akan mengimplementasikan 3 macam
dialog, antara lain :
Toast
List dialog
Alert dialog
Untuk membuat aplikasi ini. Silahkan membuat project baru seperti pada gambar dibawah
ini.
1. Membuat project dengan nama alertlist
Gambar 2.1 : membuat project alertlist
2. Modifkasi layout di activitymain.mml menjadi seperti dibawah ini
<
RelativeLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
xmlns:tools
=
"http://schemas.android.com/tools"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
tools:context
=
".AlertListActivity"
>
<
TextView
android:id
=
"@+id/seleksi"
android:layout_height
=
"wrap_content"
android:layout_centerHorizontal
=
"true"
android:layout_centerVertical
=
"true"
android:text
=
"@string/hello_world"
/>
<
Button
android:id
=
"@+id/pesantoast"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:layout_alignParentRight
=
"true"
android:layout_alignParentTop
=
"true"
android:text
=
"Tampilkan Toast"
/>
<
Button
android:id
=
"@+id/keluar"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:layout_above
=
"@+id/seleksi"
android:layout_height
=
"wrap_content"
android:layout_alignParentLeft
=
"true"
android:layout_below
=
"@+id/pesantoast"
android:layout_marginTop
=
"18dp"
android:text
=
"Tampilkan List"
/>
</
RelativeLayout
>
3. Modifikasi file AlertListActivity.java seperti dibawah ini
package com.example.alertlist;
import android.os.Bundle;
import android.app.Activity;
public class AlertListActivity extends Activity implements
OnClickListener {
Button pesantoast;
Button keluar;
Button tampillist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alert_list);
pesantoast = (Button)findViewById(R.id.pesantoast);
pesantoast.setOnClickListener(this);
tampillist = (Button)findViewById(R.id.tampillist);
tampillist.setOnClickListener(this);
keluar = (Button)findViewById(R.id.keluar);
keluar.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate(R.menu.activity_alert_list, menu);
return true;
}
@Override
public void onClick(View arg0) {
if(arg0 == pesantoast){
Toast.makeText(getBaseContext(),
"Anda
Memilih
Toast", Toast.LENGTH_SHORT).show();
}
else if (arg0 == keluar){
AlertDialog.Builder
builder
=
new
AlertDialog.Builder(this);
builder.setMessage("Apakah
Anda
ingin
keluar ?").setCancelable(false)
.setPositiveButton("Ya",
new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int
arg1) {
AlertListActivity.this.finish();
// TODO Auto-generated method stub
}
}).setNegativeButton("Tidak",
new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int
arg1) {
arg0.cancel();
}
}).show();
}
else if (arg0 == tampillist){
final CharSequence[] item = {"Jeruk", "Jambu",
"Nangka", "Nanas"};
AlertDialog.Builder
builder
=
new
AlertDialog.Builder(this);
builder.setTitle("Pilih Minuman");
builder.setItems(item,
new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int
arg1) {
Toast.makeText(getBaseContext(),
item[arg1], Toast.LENGTH_SHORT).show();
// TODO Auto-generated method stub
}
}).show();
}
// TODO Auto-generated method stub
}
}
4. Jalankan aplikasi dan lihat hasilnya.
Gambar 2.2 : list dialog
PERTEMUAN 3
Pada bagian ini, kita akan mempelajari :
Intent untuk memanggil activity
Penerapan intent pada aplikasi konversi berat badan
...
MEMBUAT INTENT
Pada pertemuan ketiga kita akan belajar membuat intent sederhana. Inti dari sebuah
aplikasi ada 3, yaitu activity, service dan broadcast. Intent digunakan untuk memanggil
activity, memanggil service, atau melakukan broadcast.
Pada bagian ini, kita akan memahami intent paling sederhana yaitu memanggil activity
lain.
1. Buat project dengan nama IntentPertama
Gambar 3.1 : membuat project intentpertama
2. Modifikasi activity_pertama.xml seperti dibawah ini
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
xmlns:tools
=
"http://schemas.android.com/tools"
android:id
=
"@+id/LinearLayout1"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:orientation
=
"vertical"
tools:context
=
".ActivityPertama"
>
<
TextView
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"@string/hello_world"
/>
<
Button
android:id
=
"@+id/button1"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"Next"
/>
</
LinearLayout
>
3. Modifikasi ActivityPertama.java seperti dibawah ini
package com.example.intentpertama;
import android.os.Bundle;
import android.app.Activity;
public class ActivityPertama extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pertama);
final Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent
myintent
=
new
Intent(button1.getContext(), ActivityKedua.class);
startActivityForResult(myintent, 0);
// TODO Auto-generated method stub
}
});
}
}
Gambar 3.2 : membuat activity kedua
5. Modifikasi activity_kedua.xml seperti dibawah ini
<
RelativeLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
xmlns:tools
=
"http://schemas.android.com/tools"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
".ActivityKedua"
>
<
Button
android:id
=
"@+id/back"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_alignParentLeft
=
"true"
android:layout_alignParentTop
=
"true"
android:text
=
"Kembali"
/>
</
RelativeLayout
>
6.
Modifkasi ActivityKedua.java seperti dibawah ini
package com.example.intentpertama;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class ActivityKedua extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kedua);
Button back = (Button)findViewById(R.id.back);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
// TODO Auto-generated method stub
}
});
} }
7.
Jalankan aplikasi seperti gambar 3.3
Gambar 3.3 : hasil aplikasi intent sederhana
LATIHAN 1 MEMBUAT KONVERSI BERAT BADAN
Aplikasi konversi berat badan ini menggunakan dua buah activity. Activity pertama berisi
inputan nama, username, dan button. Activity kedua berisi textfield dan button.
Gambar 3.4 : membuat project beratbadan
2.
Modifkasi activitymmain.mml seperti dibawah ini
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
xmlns:tools
=
"http://schemas.android.com/tools"
android:id
=
"@+id/LinearLayout1"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:orientation
=
"vertical"
tools:context
=
".MainActivity"
>
<
TextView
android:id
=
"@+id/textView1"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"Username"
/>
<
EditText
android:id
=
"@+id/username"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:ems
=
"10"
>
android:layout_height
=
"wrap_content"
android:text
=
"Password"
/>
<
EditText
android:id
=
"@+id/password"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"Login"
/>
</
LinearLayout
>
3.
Modifkasi mainactivity.java seperti dibawah ini
package com.example.latihan1;
import android.os.Bundle;
import android.app.Activity;
public
class
MainActivity
extends
Activity
implements
android.view.View.OnClickListener {
EditText username, password;
Button login;
String user = "yuni", pass = "12345";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
username = (EditText)findViewById(R.id.username);
password = (EditText)findViewById(R.id.password);
login = (Button)findViewById(R.id.login);
login.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onClick(View arg0) {
try{
if(arg0.getId() == R.id.login){
}
}
catch (Exception e){
Toast.makeText(getBaseContext(), "Anda Tidak Berhak
Masuk", Toast.LENGTH_LONG).show();
}
}
}
4.
Modifkasi activitymmain2.mml sperti dibawah ini
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
xmlns:tools
=
"http://schemas.android.com/tools"
android:id
=
"@+id/LinearLayout1"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:orientation
=
"vertical"
tools:context
=
".Main2Activity"
>
<
TextView
android:id
=
"@+id/textView1"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"Masukkan Berat Badan"
/>
<
EditText
android:id
=
"@+id/berat"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:ems
=
"10"
android:layout_height
=
"wrap_content"
android:text
=
"Masukkan Tinggi Badan"
/>
<
EditText
android:id
=
"@+id/tinggi"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:ems
=
"10"
android:inputType
=
"number"
/>
<
Button
android:id
=
"@+id/hasil"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:text
=
"Hasil"
/>
<
TextView
android:id
=
"@+id/output"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"Hasil"
/>
<
Button
android:id
=
"@+id/back"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:text
=
"Back"
/>
<
Button
android:id
=
"@+id/exit"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:text
=
"Exit"
/>
</
LinearLayout
>
5.
Modifkasi Main2Activity.java seperti dibawah ini
package com.example.latihan1;
import android.os.Bundle;
import android.app.Activity;
public class Main2Activity extends Activity implements OnClickListener {
Button hasil, back, exit;
EditText berat, tinggi;
TextView output;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
berat = (EditText)findViewById(R.id.berat);
tinggi = (EditText)findViewById(R.id.tinggi);
output = (TextView)findViewById(R.id.output);
hasil = (Button)findViewById(R.id.hasil);
back = (Button)findViewById(R.id.back);
exit = (Button)findViewById(R.id.exit);
hasil.setOnClickListener(this);
back.setOnClickListener(this);
exit.setOnClickListener(this);
}
@Override
getMenuInflater().inflate(R.menu.activity_main2, menu);
return true;
}
@Override
public void onClick(View v) {
int angka = 110; //angka ideal
int
angka1
=
Integer.parseInt(berat.getText().toString()); //merubah dari string
edittext ke integer
int angka2 = Integer.parseInt(tinggi.getText().toString());
int ideal = angka2 - angka1; //berat badan ideal
int ideal2 = angka2 - angka; //berat badan yang disarankan
try{
if(v.getId() == R.id.hasil){ //button hasil
if(ideal == 110){
output.setText("Berat Badan Anda Ideal");
}else if (ideal > 110){
output.setText("Anda Kurus");
}else{
output.setText("Anda Gemuk, berat Anda
"+angka1+" Tinggi Anda "+angka2+" Seharusnya Berat badan anda "+ideal2);
}
}else if (v.getId() == R.id.exit){
AlertDialog.Builder
builder
=
new
AlertDialog.Builder(this);
builder.setMessage("Apakah
Anda
Ingin
Keluar ?").setCancelable(false)
.setPositiveButton("OK",
new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int
arg1) {
which) {
dialog.cancel();
}
}).setNeutralButton("Cancel",
new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int
which) {
dialog.dismiss();
}
}).show();
}else if (v.getId() == R.id.back){
Intent
i
=
new
Intent(getBaseContext(),
MainActivity.class);
startActivityForResult(i, 0);
}else{
Toast.makeText(getBaseContext(),
"Masukkan
Berat dan Tinggi Badan Anda", Toast.LENGTH_SHORT).show();
output.setText("Masukkan Angka Dulu");
}
}catch(Exception e){
Toast.makeText(getBaseContext(),
"Hahaha",
Toast.LENGTH_SHORT).show();
}
}
}
Gambar 3.6 : hasil aplikasi konversi berat badan
PERTEMUAN 4
Pada bagian ini, kita akan mempelajari :
Membuat aplikasi kalkulator sederhana
Pengenalan Autocomplete
...…
MEMBUAT APLIKASI KALKULATOR
1. Buat project dengan nama kalkulator
Gambar 4.1 : membuat aplikasi kalkulator
2. Modifikasi main.xml seperti pada gambar 4.2.
3. Modifikasi mainactivity.java seperti dibawah ini
package com.example.hitung_sederhana;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
public class MainActivity extends Activity implements OnClickListener {
EditText a, b, c;
Button tambah, kurang, kali, bagi, next;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
a = (EditText) findViewById(R.id.a);
b = (EditText) findViewById(R.id.b);
c = (EditText) findViewById(R.id.c);
tambah = (Button) findViewById(R.id.tambah);
kurang = (Button) findViewById(R.id.kurang);
kali = (Button) findViewById(R.id.kali);
bagi = (Button) findViewById(R.id.bagi);
next = (Button)findViewById(R.id.next);
tambah.setOnClickListener(this);
public void onClick(View v) {
int angka1 = Integer.parseInt(a.getText().toString());
int angka2 = Integer.parseInt(b.getText().toString());
int hasil = angka1 + angka2;
int hasil2 = angka1 - angka2;
int hasil3 = angka1 * angka2;
float hasil4 = angka1 / angka2;
try {
if (v.getId() == R.id.tambah) {
c.setText(Integer.toString(hasil));
} else if (v.getId() == R.id.kurang) {
c.setText(Integer.toString(hasil2));
} else if (v.getId() == R.id.kali) {
c.setText(Integer.toString(hasil3));
} else if (v.getId() == R.id.bagi){
c.setText(Float.toString(hasil4));
} else {
Intent
i
=
new
Intent(getBaseContext(),
MainActivity2.class);
startActivityForResult(i, 0);
}
} catch (Exception e) {
Toast.makeText(getBaseContext(),
"Salah",
Toast.LENGTH_LONG).show();
c.setText("Tak Terhingga ~");
}
// ketiga.settext(string.valueof(hasil)).tostring());
}
}
4.
Modifkasi main2.mml
<
RelativeLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
xmlns:tools
=
"http://schemas.android.com/tools"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
".MainActivity2"
>
<
TextView
android:id
=
"@+id/textView1"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_centerHorizontal
=
"true"
android:layout_centerVertical
=
"true"
android:text
=
"@string/hello_world"
/>
<
Button
android:id
=
"@+id/back"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_alignParentTop
=
"true"
android:layout_alignRight
=
"@+id/textView1"
android:layout_marginTop
=
"40dp"
5.
Modifkasi mainactivity2.mml seperti dibawah ini
package com.example.hitung_sederhana;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
public class MainActivity2 extends Activity implements OnClickListener {
Button back;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2);
back = (Button)findViewById(R.id.back);
back.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main_activity2,
menu);
return true;
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.back){
Intent
i
=
new
Intent(getBaseContext(),
MainActivity.class);
startActivityForResult(i, 0);
}else{
Toast.makeText(getBaseContext(),
"Salah",
Toast.LENGTH_LONG).show();
back.setText("Salah Le... ~");
}
}
}
MEMBUAT APLIKASI DENGAN AUTOCOMPLETE
1. Buat project dengan nama latihan2
Gambar 4.3 : membuat project latihan2
2.
Modifkasi main.mml seperti dibawah ini
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
xmlns:tools
=
"http://schemas.android.com/tools"
android:id
=
"@+id/LinearLayout1"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:orientation
=
"vertical"
tools:context
=
".MainActivity"
>
<
TextView
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"NAMA"
/>
<
EditText
android:id
=
"@+id/nama"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:ems
=
"10"
>
<
requestFocus
/>
</
EditText
>
<
TextView
android:id
=
"@+id/textView1"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"NIM"
/>
<
EditText
android:id
=
"@+id/nim"
android:layout_width
=
"match_parent"
android:ems
=
"10"
/>
<
TextView
android:id
=
"@+id/seleksi"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"ASAL PROVINSI"
/>
<
AutoCompleteTextView
android:id
=
"@+id/provinsi"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:ems
=
"10"
android:text
=
"Provinsi"
/>
<
TextView
android:id
=
"@+id/textView3"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"JENIS KELAMIN"
/>
android:layout_height
=
"wrap_content"
android:text
=
"Pria"
/>
<
RadioButton
android:id
=
"@+id/wanita"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"Wanita"
/>
</
RadioGroup
>
<
TextView
android:id
=
"@+id/textView4"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"ANDA SETUJU DENGAN SEGALA KETENTUAN DARI KAMI "
/>
<
CheckBox
android:id
=
"@+id/ya"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"Ya"
/>
<
ImageButton
android:id
=
"@+id/create"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:src
=
"@android:drawable/ic_input_add"
/>
</
LinearLayout
>
3.
Modifkasi activity.java seperti dibawah ini
package com.example.latihan2;
import android.R.string;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity implements OnClickListener,
TextWatcher, RadioGroup.OnCheckedChangeListener{
EditText nama, nim;
TextView seleksi;
AutoCompleteTextView provinsi;
RadioGroup jk;
CheckBox ya;
String item[] = {"Jawa Tengah", "Jawa Timur", "Jawa Barat",
"Sumatera Selatan", "Sumatera Utara"};
ImageButton create;
String user="yuni", pass="12345";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seleksi = (TextView)findViewById(R.id.seleksi);
provinsi = (AutoCompleteTextView)findViewById(R.id.provinsi);
provinsi.addTextChangedListener(this);
provinsi.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, item));
nama = (EditText)findViewById(R.id.nama);
nim = (EditText)findViewById(R.id.nim);
create = (ImageButton)findViewById(R.id.create);
create.setOnClickListener(this);
ya = (CheckBox)findViewById(R.id.ya);
jk = (RadioGroup)findViewById(R.id.jk);
jk.setOnCheckedChangeListener(this);
}
@Override
public void onClick(View arg0) {
try{
if(arg0.getId() == R.id.create){
MainActivity2.class);
startActivityForResult(i, 0);
}
}
catch (Exception e){
Toast.makeText(getBaseContext(), "Anda Tidak Berhak
Masuk", Toast.LENGTH_LONG).show();
}
}
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int
count,int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
seleksi.setText(provinsi.getText());
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
}
}
4. Modifikasi main2.xml seperti gambar dibawah ini
Gambar 4.4 : tampilan activity kedua
5.
Modifkasi activity2.java seperti gambar dibawah ini
package com.example.latihan2;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity2 extends Activity implements OnClickListener {
Button exit, back;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
back = (Button)findViewById(R.id.back);
exit = (Button)findViewById(R.id.exit);
back.setOnClickListener(this);
exit.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main2, menu);
return true;
}
@Override
public void onClick(View v) {
try{
if(v.getId() == R.id.exit){
AlertDialog.Builder
builder
=
new
AlertDialog.Builder(this);
builder.setMessage("Apakah
Anda
Ingin
Keluar ?").setCancelable(false)
.setPositiveButton("OK",
new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int
arg1) {
MainActivity2.this.finish();
}
})
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int
which) {
dialog.cancel();
}
}).setNeutralButton("Cancel",
new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int
which) {
dialog.dismiss();
}
}).show();
}else if (v.getId() == R.id.back){
Intent
i
=
new
Intent(getBaseContext(),
MainActivity.class);
startActivityForResult(i, 0);
}
}catch(Exception e){
Toast.makeText(getBaseContext(),
"Hahaha",
Toast.LENGTH_SHORT).show();
}
}
}
6. Jalankan aplikasi
Gambar 4.5 : hasil tampilan aplikasi
Pada bagian ini, kita akan mempelajari :
Membuat aplikasi database sederhana dengan SQLite
...
PENGENALAN SQLite
SQLite adalah database yang dibangun di Android. Hampir sama dengan SQL pada
dekstop, SQLite memiliki fiture relasional database namun membutuhkan sedikit memori.
SQLite terdapat pada semua perangkat Android. Anda culup mendefinisikan
perintah SQL untuk meng-create atau meng-update database, selanjutnya sistem ada
Android akan menangani hal-hal yang berhubungan dengn database. SQLite database
otomatis akan tersimpan didalam path data/data/nama_package/database/nama_database.
PEMBUATAN APLIKASI
1. Buat project baru dengan nama AndroidCrudExample. Lalu setelah itu modifikasi
layout activity_main.xml sesuai dengan gambar berikut;
Gambar 5.1 layout activity_main.xml
2. Kemudian buat activity baru dengan nama student_input_form.xml. Setelah selesai
membuat activity baru jangan lupa untuk menginisialisasikannya pada file
AndroidManifest.xml agar activity dapat kenal/dijalankan.
Gambar 5.2 student_input_form
3. Setelah itu buat file DatabaseHandler.java
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
protected static final String DATABASE_NAME = "StudentDatabase";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE students " +
"( id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"firstname TEXT, " +
"email TEXT ) ";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "DROP TABLE IF EXISTS students";
db.execSQL(sql);
onCreate(db);
}
}
4. Kemudian itu buat lagi file ObjectStudent
.java
public class ObjectStudent {
int id;
String firstname;
String email;
}
}
5. S
etelah itu modifkasi fle MainActivity.java (bagi yang tidak memiliki
atau belum membuat fle MainActivity.java buat terlebih dahulu)
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button buttonCreateLocation = (Button) findViewById(R.id.buttonCreateStudent);
public void countRecords() {
int recordCount = new TableControllerStudent(this).count();
TextView textViewRecordCount = (TextView) findViewById(R.id.textViewRecordCount);
textViewRecordCount.setText(recordCount + " records found.");
}
public void readRecords() {
LinearLayout linearLayoutRecords = (LinearLayout) findViewById(R.id.linearLayoutRecords);
linearLayoutRecords.removeAllViews();
List<ObjectStudent> students = new TableControllerStudent(this).read();
if (students.size() > 0) {
for (ObjectStudent obj : students) {
int id = obj.id;
String studentFirstname = obj.firstname;
String studentEmail = obj.email;
String textViewContents = studentFirstname + " - " + studentEmail;
TextView textViewLocationItem = new TextView(this);
textViewLocationItem.setPadding(0, 10, 0, 10);
textViewLocationItem.setText(textViewContents);
TextView locationItem = new TextView(this);
locationItem.setPadding(8, 8, 8, 8);
locationItem.setText("No records yet.");
linearLayoutRecords.addView(locationItem);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
6.
Lalu kemudian buat fle TableControllerStudent.java
import java.util.List;
import android.database.sqlite.SQLiteDatabase;
public class TableControllerStudent extends DatabaseHandler {
public TableControllerStudent(Context context) {
super(context);
}
public boolean create(ObjectStudent objectStudent) {
ContentValues values = new ContentValues();
values.put("firstname", objectStudent.firstname);
values.put("email", objectStudent.email);
SQLiteDatabase db = this.getWritableDatabase();
boolean createSuccessful = db.insert("students", null, values) > 0;
db.close();
return createSuccessful;
}
public List<ObjectStudent> read() {
List<ObjectStudent> recordsList = new ArrayList<ObjectStudent>();
String sql = "SELECT * FROM students ORDER BY id DESC";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(sql, null);
if (cursor.moveToFirst()) {
do {
int id =
Integer.parseInt(cursor.getString(cursor.getColumnIndex("id")));
String studentFirstname = cursor.getString(cursor.getColumnIndex("firstname"));
String studentEmail = cursor.getString(cursor.getColumnIndex("email"));
ObjectStudent objectStudent = new ObjectStudent();
objectStudent.id = id;
objectStudent.firstname = studentFirstname;
objectStudent.email = studentEmail;
recordsList.add(objectStudent);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return recordsList;
}
public ObjectStudent readSingleRecord(int studentId) {
ObjectStudent objectStudent = null;
String sql = "SELECT * FROM students WHERE id = " + studentId;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(sql, null);
if (cursor.moveToFirst()) {
int id =
Integer.parseInt(cursor.getString(cursor.getColumnIndex("id")));
String firstname =
cursor.getString(cursor.getColumnIndex("firstname"));
String email =
cursor.getString(cursor.getColumnIndex("email"));
objectStudent = new ObjectStudent();
objectStudent.id = id;
objectStudent.firstname = firstname;
objectStudent.email = email;
}
cursor.close();
db.close();
return objectStudent;
}
public boolean update(ObjectStudent objectStudent) {
values.put("firstname", objectStudent.firstname);
values.put("email", objectStudent.email);
String where = "id = ?";
String[] whereArgs = { Integer.toString(objectStudent.id) };
SQLiteDatabase db = this.getWritableDatabase();
boolean updateSuccessful = db.update("students", values, where, whereArgs) > 0;
db.close();
return updateSuccessful;
}
public boolean delete(String id) {
SQLiteDatabase db = this.getWritableDatabase();
boolean deleteSuccessful = db.delete("students", "id = " + id, null) > 0;
db.close();
return deleteSuccessful;
}
public int count() {
SQLiteDatabase db = this.getWritableDatabase();
String sql = "SELECT * FROM students";
int recordCount = db.rawQuery(sql, null).getCount();
db.close();
return recordCount;
}
}
7. Buat file java dengan nama OnClickListenerCreateStudent
.java
import android.app.AlertDialog;
import android.content.Context;
public class OnClickListenerCreateStudent implements OnClickListener {
@Override
public void onClick(View view) {
final Context context = view.getContext();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View formElementsView =
inflater.inflate(R.layout.student_input_form, null, false);
final EditText editTextStudentFirstname = (EditText) formElementsView.findViewById(R.id.editTextStudentFirstname);
final EditText editTextStudentEmail = (EditText) formElementsView.findViewById(R.id.editTextStudentEmail);
new AlertDialog.Builder(context)
.setView(formElementsView)
.setTitle("Create Student")
.setPositiveButton("Add",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
String studentFirstname = editTextStudentFirstname.getText().toString();
String studentEmail = editTextStudentEmail.getText().toString();
ObjectStudent objectStudent = new ObjectStudent();
objectStudent.firstname = studentFirstname;
objectStudent.email = studentEmail;
boolean createSuccessful = new TableControllerStudent(context).create(objectStudent);
if(createSuccessful){
Toast.makeText(context, "Student information was saved.", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context, "Unable to save student information.", Toast.LENGTH_SHORT).show();
}
((MainActivity) context).readRecords();
8. Buat file java lainnya denga nama OnLongClickListenerStudentRecord
.java
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
public class OnLongClickListenerStudentRecord implements OnLongClickListener {
Context context;
String id;
@Override
public boolean onLongClick(View view) {
context = view.getContext();
id = view.getTag().toString();
final CharSequence[] items = { "Edit", "Delete" };
new AlertDialog.Builder(context).setTitle("Student Record")
.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item == 0) {
editRecord(Integer.parseInt(id));
}
else if (item == 1) {
boolean deleteSuccessful = new TableControllerStudent(context).delete(id);
if (deleteSuccessful){
Toast.makeText(context, "Student record was deleted.", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context, "Unable to delete student record.", Toast.LENGTH_SHORT).show();
}
public void editRecord(final int studentId) {
final TableControllerStudent tableControllerStudent = new TableControllerStudent(context);
ObjectStudent objectStudent =
tableControllerStudent.readSingleRecord(studentId);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View formElementsView =
inflater.inflate(R.layout.student_input_form, null, false);
final EditText editTextStudentFirstname = (EditText) formElementsView.findViewById(R.id.editTextStudentFirstname);
final EditText editTextStudentEmail = (EditText) formElementsView.findViewById(R.id.editTextStudentEmail);
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ObjectStudent();
objectStudent.id = studentId;
objectStudent.firstname = editTextStudentFirstname.getText().toString();
objectStudent.email = editTextStudentEmail.getText().toString();
boolean updateSuccessful = tableControllerStudent.update(objectStudent);
if(updateSuccessful){
Toast.makeText(context, "Student record was updated.", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context, "Unable to update student record.", Toast.LENGTH_SHORT).show();
}
((MainActivity) context).countRecords();
((MainActivity) context).readRecords();
dialog.cancel();
}
}).show();
}
}
9. Setelah semua selesai dibuat, coba jalankan. apakah sesuai dengan gambar dibawah
?
Gambar 5.3 : Tampilan awal aplikasi
Gambar 5.4 : Tampilan input data
Gambar 5.5 : Tampilan saat data berhasil diinsert
PERTEMUAN 6
Pada bagian ini, kita akan mempelajari :
Membuat aplikasi database sederhana dengan PHP MYSQL
...
PEMBUATAN PROJECT
1. Buat project baru dengan nama AndroidConnectingToPhpMySQL. Kemudian buat
mysql database dengan nama android_connect dengan tabel product dan fieldnya
seperti pada gambar.
Gambar 6.1 Database
2. Setelah database selesai dibuat, kemudia buat buat folder android_connect pada C:\
xampp\htdocs\android_connect
setelah itu fle dbmconnect.php untuk
koneksi kedatabase yang disimpan kedalam folder tersebut.
<?php
class DB_CONNECT {
function __construct() {
// connecting to database
$this->connect();
}
function __destruct() {
$this->close();
}
function connect() {
require_once __DIR__ . '/db_config.php';
$con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
$db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());
return $con;
}
function close() {
// closing db connection
mysql_close();
}
?>
3. Kemudian
buat fle dbmconfg.php
<?php
define('DB_USER', "root"); // db user
define('DB_PASSWORD', ""); // db password (mention your db password here)
define('DB_DATABASE', "android_connect"); // database name
define('DB_SERVER', "localhost"); // db server
?>
4. Kemudian buat file
createmproduct.php
<?php
$response = array();
if (isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) {
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("INSERT INTO products(name, price, description) VALUES('$name', '$price', '$description')");
if ($result) {
$response["success"] = 1;
$response["message"] = "Product successfully created.";
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "Oops! An error occurred.";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
?>
5. Kemudian buat file
updatemproduct.php
<?php
$response = array();
if (isset($_POST['pid']) && isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) {
$pid = $_POST['pid'];
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("UPDATE products SET name = '$name', price = '$price', description = '$description' WHERE pid = $pid");
if ($result) {
$response["success"] = 1;
$response["message"] = "Product successfully updated.";
echo json_encode($response);
} else {
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
}
?>
6. Kemudian juga buat file
deletemproduct.php
<?php
$response = array();
if (isset($_POST['pid'])) {
$pid = $_POST['pid'];
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("DELETE FROM products WHERE pid = $pid");
if (mysql_affected_rows() > 0) {
$response["success"] = 1;
$response["message"] = "Product successfully deleted";
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No product found";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
?>
7. Selanjutnya buat file
getmallmproducts.php
<?php
$response = array();
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("SELECT *FROM products") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
$response["products"] = array();
while ($row = mysql_fetch_array($result)) {
$product = array();
$product["pid"] = $row["pid"];
$product["name"] = $row["name"];
$product["price"] = $row["price"];
$product["description"] = $row["description"];
$product["created_at"] = $row["created_at"];
$product["updated_at"] = $row["updated_at"];
array_push($response["products"], $product);
}
$response["success"] = 1;
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No products found";
echo json_encode($response);
}
?>
8. Buat juga
getmproductmdetails.php
<?php
$response = array();
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
if (isset($_GET["pid"])) {
$pid = $_GET['pid'];
if (!empty($result)) {
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
?>
9. setelah selesai coba akses
http://localhost/android_connect/db_connect.php
untuk
melihat apakah koneksi berjalan dengan baik. jika koneksi berjalan dengan baik
kembali keproject android lalu buat main layout dengan nama main_screen.xml
dengan tampilan seperti pada gambar berikut;
Gambar 6.2 Layout main_screen.xml
10. kemudian buat juga layout untuk tampilan add_product, all_products, edit-product,
dan list_item
Gambar 6.5 Layout edit_product.xml
Gambar 6.6 Layout item_list.xml
11. S
etelah layout selesai dibuat, kemudian lanjut buat fle JSONParser.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import android.util.Log;
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
// function get json from url
// by making HTTP POST or GET mehtod
public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) {
// Making HTTP request
try {
// check for request method
if(method == "POST"){
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}else if(method == "GET"){
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
12.
lalu buat NewProductActivity.java
import java.util.ArrayList;
import java.util.List;
import com.example.androidhive.R;