Android Database SQLite

Versi 1.0

1. Mengenal SQLite

Penyimpanan database internal pada aplikasi Android bisa dilakukan dengan SQLite. SQLite merupakan database management system yang populer untuk penyimpanan lokal / client pada aplikasi perangkat lunak. SQLite merupakan database engine yang paling banyak digunakan di dunia untuk keperluan seperti browser, sistem operasi, dan aplikasi mobile. SQLite pada aplikasi Android menyimpan data internal aplikasi itu sendiri, aplikasi lain tidak dapat menggunakannya.

2. Membuat Database SQLite

Database SQLite pada aplikasi Android dibuat dengan class anak (subclass) dari class SQLiteOpenHelper. Class tersebut menjadi class data access untuk database SQLite. Object dari class tersebut dapat digunakan oleh semua class lain yang mengakses database. Untuk membuatnya, kita buat class yang bernama Database yang menjadi subclass dari SQLiteOpenHelper sebagai berikut.
import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Database extends SQLiteOpenHelper {

	private final static int DATABASE_VERSION = 1;
	private final static String DATABASE_NAME = "DIANDEV";
	private SQLiteDatabase DB;

	public Database(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		createTable(db);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}

	public void openWritable(){
		this.DB = getWritableDatabase();
	}

	public void openReadable(){
		this.DB = getReadableDatabase();
	}

	public void close(){
		this.DB.close();
	}

	public void createTable(SQLiteDatabase db){
                String sql = "CREATE TABLE IF NOT EXISTS person " +
				"(id INTEGER PRIMARY KEY, name TEXT)";
		db.execSQL(sql);
	}

	public long insertData(int id, String name) {
		ContentValues values = new ContentValues();
		values.put("id", id);
		values.put("name", name);
		return DB.insert("person", null, values);
	}

	public int updateData(int id, String name) {
		ContentValues values = new ContentValues();
		values.put("name", name);
		return DB.update("person", values, "id = " + id, null);
	}

	public int deleteData(int id) {
		return DB.delete("person", "id = " + id, null);
	}

	public ArrayList getPersonList() {
		Cursor cursor = DB.rawQuery(
				"SELECT * from person", null);
		ArrayList list = new ArrayList();
		cursor.moveToFirst();
		for (int i = 0; i < cursor.getCount(); i++) {
			list.add(cursor.getString(cursor.getColumnIndex("name")));
			cursor.moveToNext();
		}
		return list;
	}

}
Constuctor dari class tersebut mendefinisikan nama dan versi database. Nama database kita beri nama “DIANDEV” dan versi database adalah 1. Nama digunakan untuk memberikan penamaan database. Versi digunakan untuk memberikan nomor versi database yang digunakan dalam perubahan struktur database, misalnya penambahan tabel atau kolom pada database. Fungsi onCreate() dipanggil ketika ketika object dari class ini pertama kali dibuat dan akan memanggil fungsi createTable() yang berisi perintah untuk membuat tabel-tabel pada database. Fungsi onUpgrade() dipanggil ketika terjadi penambahan versi database yang berguna ketika kita ingin mengubah struktur database (penambahan atau perubahan tabel dan kolom).
Untuk mengakses database, maka kita perlu membuat tampilan (UI) dan class Activity pada project ini. Kita buat tampilan dengan file activity_main.xml  seperti berikut ini.
<LinearLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Android Database"
        android:layout_gravity="center_horizontal"
        android:textSize="24sp" />

    <ListView
        android:id="@+id/lv_person"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
Kita buat class MainActivity.java seperti berikut ini.
import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		Database data = new Database(this);
		data.openWritable();
		// mengambil data dari database
		ArrayList listData = data.getPersonList();
		// periksa apakah ada data, jika tidak ada akan dilakukan inisiasi data
		if(listData.size() < 1){

			// inisiasi data ke dalam database
			data.insertData(1,"Aji");
			data.insertData(2,"Tyas");
			data.insertData(3,"Cukli");
			data.insertData(4,"Paijo");
			data.insertData(5,"Bowo");
			data.insertData(6,"Mumuw");
			data.insertData(7,"Fatin");
			data.insertData(8,"Gibun");
			data.insertData(9,"Boim");
			data.insertData(10,"Limpat");

			listData = data.getPersonList();
		}
		data.close();

		ArrayAdapter adapter = new ArrayAdapter(this,
				android.R.layout.simple_list_item_1, listData);

		ListView listView = (ListView) findViewById(R.id.lv_person);
		listView.setAdapter(adapter);
	}
}
Pada class tersebut kita membuat object dari class Database yang bernama data. Pada class tersebut kita periksa apakah database telah terisi data, jika belum kita inisiasi data ke dalam database. Data dari database kita ambil dan ditampilkan pada ListView.
Kita jalankan project maka data-data dari database akan ditampilkan pada ListView seperti berikut ini.
1
Kita dapat merubah data yang ada di dalam database. Kita akan merubah data yang bernama “Aji” dengan id = 1 yang akan kita rubah namanya menjadi “Aji Setyo“. Untuk merubahnya, tambahkan code berikut ini ke dalam class MainActivity.java sebelum code data.close(). Jalankan project, maka “Aji” akan berubah menjadi “Aji Setyo” seperti berikut ini.
// perubahan data
data.updateData(1, "Aji Setyo");
listData = data.getPersonList();
2
Kita juga dapat menghapus data dari database. Kita akan merubah data yang bernama “Aji Setyo” dengan id = 1. Untuk menghapusnya, tambahkan code berikut ini sebelum code data.close(). Jalankan project, maka “Aji Setyo” tidak akan ada lagi pada list karena data tersebut telah dihapus dari database.
// penghapusan data
data.deleteData(1);
listData = data.getPersonList();
3

3. Download Project

Anda dapat mendownload file project dari tutorial ini di sini.

Jika ada yang belum jelas, silakan tanyakan pada form komentar, Ciao… 🙂

Shared Preferences

Versi 1.0

1. Mengenal Shared Preferences

Menyimpan data pada aplikasi Android dapat dilakukan dengan beberapa cara, antara lain :

  • Shared Preferences
    Adalah penyimpanan data primitif pada file internal aplikasi dengan pasangan key-value.
  • Internal Storage
    Adalah penyimpanan data privat pada memory internal device.
  • External Storage
    Adalah penyimpanan data yang bersifat publik (dapat diakses siapapun) pada memory external device.
  • SQLite Databases
    Adalah penyimpanan data terstruktur pada database internal aplikasi.
  • Network Connection
    Adalah penyimpanan data pada server dengan perantara jaringan (internet).

Yang akan kita bahas pada artikel ini adalah penyimpanan data dengan Shared Preferences. Penyimpanan dengan metode ini merupakan penyimpanan data yang paling sederhana. Sederhana pada data yang disimpan maupun metode penyimpanannya. Data yang dapat disimpan hanyalah data primitif seperti int, boolean, float, long, dan String. Data disimpan dengan konsep pasangan Key-Value. Key digunakan sebagai id dari data dan Value adalah nilai datanya, misalnya key adalah “nama” dan value adalah nilai dari nama itu misalnya “dian”, sehingga pasangan Key-Valuenya adalah (key,value) = (“nama”,”dian”).

2. Implementasi Shared Preferences

Shared Preferences bisa dimanfaatkan untuk penyimpanan data yang sederhana. Saya akan mencontohkan penggunaan Shared Preferences sebagai seperti berikut ini.
Pertama kita buat xml layout pada file activity_main.xml seperti berikut ini.

<LinearLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Masukkan Nama : " />

    <EditText
        android:id="@+id/et_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/bt_save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Simpan" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Nama Tersimpan : " />

    <TextView
        android:id="@+id/tv_saved_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />

</LinearLayout>

Kemudian kita buat class MainActivity menjadi seperti berikut ini.

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private SharedPreferences pref;
	private final String KEY_NAME = "key_name";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		pref = getSharedPreferences("mypreferences", MODE_PRIVATE);

		showSavedName();

		final EditText etName = (EditText) findViewById(R.id.et_name);

		Button bSave = (Button) findViewById(R.id.bt_save);
		bSave.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				String name = etName.getText().toString();
				if(name.equals("")){
					Toast.makeText(MainActivity.this, 
                                              "Nama tidak boleh kosong",
                                              Toast.LENGTH_SHORT).show();
				}else{
					saveName(name);
					showSavedName();
				}
			}
		});
	}

	private void showSavedName(){
		String savedName = getSavedName();

		TextView tvSavedName = (TextView) findViewById(R.id.tv_saved_name);
		tvSavedName.setText(savedName);
	}

	private String getSavedName(){
		return pref.getString(KEY_NAME, "-"); 
	}

	private void saveName(String name){
		Editor editor = pref.edit();
		editor.putString(KEY_NAME, name);
		editor.commit();
	}
}

Jalankan project maka aplikasi akan berjalan seperti berikut ini.

1

2

3

Jika aplikasi kita tutup, kemudian kita jalankan lagi, maka pada Nama Tersimpan akan langsung muncul nama Jono. Karena nama terakhir yang disimpan adalah Jono. Maka terbukti bahwa data nama telah berhasil disimpan pada penyimpanan Shared Preferences.

4

Shared Preferences dapat dimanfaatkan untuk membuat berbagai penyimpanan sederhana seperti :

  • Session Account (username dan password) dari aplikasi
  • Data Pengaturan (Setting: bahasa, tema, volume, dsb) dari aplikasi
  • Dan Lain-Lain

3. Download Project

Untuk lebih memudahkan dan memahami tutorial ini, silakan download project-nya di sini dan jalankan di IDE anda.

Android ListView

Versi 1.0

1. Mengenal ListView

ListView adalah user interface pada Android yang menampilkan item-item dari sekumpulan daftar yang tersusun berbaris ke bawah atau ke samping dengan tampilan yang dapat scroll. ListView menampilkan item-item dari suatu Array atau List atau Query Database yang dijadikan data model sebagai item dari ListView. Tampilan dari ListView sederhana seperti berikut ini.

2

2. Adapter

Adapter adalah class yang mengatur item-item pada ListView. Adapter mengatur resource view pada setiap item dari ListView. Resource view pada ListView yang ada pada sebuah tampilan layar sebuah aplikasi memiliki jumlah resource view yang tetap sesuai dengan item yang tampak pada layar. Pada ListView dengan tampilan scroll, resourve view akan digunakan secara berulang (reusable) dengan mengatur item yang tampak dan yang tersembunyi pada ListView. Adapter juga mengatur data model dari setiap item ListView. Sebuah data model akan diatur menjadi sebuah item dari ListView. Gambar sebuah item dari ListView sederhana :

3

3. Membuat ListView Sederhana

ListView dikatakan sederhana atau komplek ditentukan oleh kompleksitas item dari ListView tersebut. Jika masing-masing item dari ListView menampilkan sebuah kata atau kalimat saja, maka ListView tersebut sederhana. Jika masing-masing item dari ListView memiliki isi yang komplek seperti item dari sebuah status jejaring sosial dimana pada masing-masing item memiliki foto profil, nama, waktu, status dan komentar, maka ListView tersebut adalah ListView komplek. Pembuatan ListView komplek dilakukan dengan Custom ListView.

Untuk membuat ListView sederhana, kita buat terlebih dahulu file layout.xml pada folder layout. Copy-paste code di bawah ini pada file tersebut.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/id_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
Kemudian kita buat class MainActivity (class ini biasanya sudah dibuat otomatis pada project). Hapus isi class tersebut kemudian copy-paste code di bawah ini pada class tersebut.
import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

        @Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout);

		String[] arrName = {"Samsung","Sony","Apple","LG","Motorola",
		"HTC","Acer","Lenovo","Oppo","Nokia","BlackBerry","Huawei",
		"ZTE","Meizu","HP","Asus","Panasonic"};

		ArrayAdapter adapter = new ArrayAdapter(this,
		android.R.layout.simple_list_item_1, arrName);

		ListView listView = (ListView) findViewById(R.id.id_list);
		listView.setAdapter(adapter);
	}
}

Array String[] arrName merupakan kumpulan data String yang akan ditampilkan pada ListView. Array ini dimasukkan ke dalam object dari ArrayAdapter yang bernama adapter. Adapter ini merupakan adapter sederhana yang hanya menampilkan sebuah TextView pada item ListView. Code ListView listView = (ListView) findViewById(R.id. id_list); membuat object dari class ListView dengan menginisiasi object tersebut dengan ListView yang kita buat pada file layout.xml. Jalankan project, maka ListView tampil seperti berikut ini.

1

4. Membuat Custom ListView

Custom ListView merupakan ListView dengan item yang bisa kita buat sesuai selera, misalnya item yang memiliki atribut foto, nama, dan keterangan. Item yang custom seperti itu dapat dibuat dan diatur oleh class Adapter. Contoh Item pada Custom ListView:

5

Untuk membuat Custom ListView, kita buat terlebih dahulu layout-layoutnya. Kita membutuhkan 2 layout, yaitu layout halaman yang menampilkan ListView dan layout item untuk Adapter.
Layout halaman kita buat dengan membuat file layout.xml di dalam folder layout dengan isi seperti ini :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/id_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
Layout item untuk Adapter kita buat dengan membuat file item.xml di dalam folder layout dengan isi seperti ini :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="8dp" >

    <ImageView
        android:id="@+id/item_icon"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_marginRight="8dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/item_nama"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Galaxy S4"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/item_keterangan"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Samsung"
            android:textSize="12sp" />
    </LinearLayout>

</LinearLayout>

Kemudian kita siapkan gambar yang menjadi icon dari item ListView. Saya pakai gambar Android seperti ini dengan ukuran 48 x 48 px (panjang x lebar harus sama). Kita simpan gambar pada folder drawable-hdpi dengan nama icon.png.

7

6

Kemudian kita buat sebuah class data model dari item ListView yang bernama class Phone. Object dari class ini akan menyimpan data-data yang akan ditampilkan pada item dari ListView. Sebuah object dari class Phone akan ditampilkan pada sebuah item dari ListView. Kita buat class yang bernama Phone.java dengan isi class sebagai berikut.
public class Phone {

	private String name;
	private String brand;

	public Phone(String name, String brand) {
		setName(name);
		setBrand(brand);
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}
}
Kemudian kita buat class Adapter. Class Adapter adalah class yang akan membuat dan mengatur item-item dari ListView. Class ini mengkonversi data dari object Phone menjadi item dari ListView. Kita buat class yang bermama ListAdapter.java dengan isi class sebagai berikut :
import java.util.ArrayList;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class ListAdapter extends ArrayAdapter {

	private ArrayList list;
	private Activity act;

	public ListAdapter(Activity context, ArrayList objects) {
		super(context, R.layout.item, objects);
		this.list = objects;
		this.act = context;
	}

	static class ViewHolder {
		protected ImageView icon;
		protected TextView nama;
		protected TextView keterangan;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		View view = convertView;
		if (view == null) {
			LayoutInflater inflater = act.getLayoutInflater();
			view = inflater.inflate(R.layout.item, null);

			ViewHolder holder = new ViewHolder();
			holder.icon = (ImageView) view.findViewById(R.id.item_icon);
			holder.nama = (TextView) view.findViewById(R.id.item_nama);
			holder.keterangan = (TextView) view
					.findViewById(R.id.item_keterangan);
			view.setTag(holder);
		}

		ViewHolder holder = (ViewHolder) view.getTag();
		Phone phone = list.get(position);

		holder.icon.setImageResource(R.drawable.icon);
		holder.nama.setText(phone.getName());
		holder.keterangan.setText(phone.getBrand());

		return view;
	}
}
Kemudian kita buat class MainActivity (class ini biasanya sudah dibuat otomatis pada project) sebagai class controller yang mengelola pembuatan Custom ListView. Buat class MainActivity.java dengan isi sebagai berikut :
import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout);

		ArrayList list = new ArrayList();
		list.add(new Phone("Galaxy S4", "Samsung"));
		list.add(new Phone("Galaxy S3", "Samsung"));
		list.add(new Phone("Galaxy Mega", "Samsung"));
		list.add(new Phone("Galaxy Note", "Samsung"));
		list.add(new Phone("Iphone", "Apple"));
		list.add(new Phone("HTC One", "HTC"));
		list.add(new Phone("Nexus 5", "LG"));
		list.add(new Phone("Nexus 4", "LG"));
		list.add(new Phone("LG G2", "LG"));
		list.add(new Phone("Moto x", "Motorola"));

		ListAdapter adapter = new ListAdapter(this, list);

		ListView listView = (ListView) findViewById(R.id.id_list);
		listView.setAdapter(adapter);
	}
}

Pada class tersebut kita membuat ArrayList yang berisi object-object dari Phone. ArrayList ini menjadi kumpulan data yang akan ditampilkan pada ListView. Di bawahnya ada object dari class ListAdapter yang bernama adapter. Object ini yang akan dimasukkan pada object dari ListView pada fungsi setAdapter(adapter). Jika project dijalankan, maka ListView akan tampil seperti ini.

4

5. Click ListView Item

ListView dapat mengenali beberapa event, salah satunya adalah event click. Masing-masing item dari ListView dapat menangkap event click dan memberikan reaksi terhadap event tersebut. Kita akan menangkap event tersebut dan memberikan reaksi sederhana dengan menampilkan sebuah kalimat. Untuk menangkap event click, maka tambahkan code berikut ini pada class MainActivity di bawah code listView.setAdapter(adapter);.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

	@Override
	public void onItemClick(AdapterView<?> arg0, View arg1,
			int position, long arg3) {
		Toast.makeText(MainActivity.this, "Yeahh... I want it...!!!",
				Toast.LENGTH_SHORT).show();
	}
});

Jalankan project maka jika item ListView kita click akan menampilkan kalimat “Yeah… I want it…!!!”.

8

Tulisan “Yeah… I want it…!!!” muncul sebagai tanggapan dari event click yang kita berikan pada item-item dari ListView.

Yeahhh… if You really want it, you will get it… 🙂

4. Download

Download dan nikmati project dari tutorial ini di sini.

Android Intent

Versi 1.0

1. Mengenal Intent

Intent merupakan suatu pesan yang digunakan untuk mengaktifkan tiga komponen dasar pada aplikasi Android yaitu Activity, Service, dan Broadcast Receiver. Aktifasi pada komponen-komponen tersebut bisa terjadi pada aplikasi yang sama atau berbeda, seperti menjalankan Activity, inisiasi Service, atau pengiriman pesan kepada Broadcast Receiver. Pada saat terjadi komunikasi antar komponen, Intent menyimpan paket informasi yang digunakan pada proses tersebut. Berikut ini adalah beberapa contoh mekanisme pengiriman Intent pada masing-masing jenis komponen :
  • Object Intent untuk menjalankan Activity baru atau memerintahkan Activity melakukan sesuatu dengan mempassing object Intent pada fungsi Context.startActivity() atau Acvity.startActivityForResult().
  • Object Intent untuk menginisiasi sebuah Service baru atau melakukan sesuatu pada Service yang sedang berjalan dengan mempassing object Intent pada fungsi Context.startService().
  • Object Intent untuk mengirimkan pesan kepada seluruh Broadcast Receiver dengan mempassing object Intent pada fungsi Context.sendBroadcast(), Context.sendOrderedBroadcast(), atau Context.sendStickyBroadcast().

2. Intent Untuk Transfer Data

Intent dapat digunakan untuk transfer data antar Activity. Pada saat sebuah Activity memanggil Activity yang lain, Intent dapat menyimpan data informasi yang ikut dikirimkan pada pemanggilan tersebut, seperti berikut ini.

    Intent intent = new Intent( this, ActivityProfile.class);
        intent.putExtra( "NAMA", "dian" );
        intent.putExtra( "UMUR", 17);
        startActivity(intent);
Pada pemanggilan Activity tersebut, dikirimkan informasi berupa data NAMA dengan nilai String “dian” dan data UMUR dengan nilai integer 17. Informasi tersebut dapat ditangkap oleh activity yang dipanggil dengan code seperti ini.
    Bundle extras = getIntent().getExtras();
        String nama = extras.getString("NAMA");
        int umur = extras.getInt( "UMUR");

3. Intent untuk melakukan aktifitas tertentu

Mengirim email, membuka halaman website, melihat lokasi pada map, merupakan aktifitas-aktifitas yang biasanya ada pada aplikasi Android. Untuk melakukan aktifitas-aktifitas tersebut, kita bisa membuat sendiri fiturnya atau bisa dengan memanfaatkan Intent untuk mengerjakannya. Intent dapat memanggil aplikasi lain untuk mengerjakan aktifitas tersebut, seperti memanggil aplikasi Gmail untuk mengirim email, aplikasi browser seperti Opera atau Chrome untuk membuka halaman website, atau aplikasi Maps untuk menampilkan lokasi pada peta. Beberapa contoh pemanfaatan Intent untuk melakukan aktifitas tertentu dengan bantuan aplikasi lain :
  • Intent untuk mengirim email
        Intent emailIntent = new Intent(android.content.Intent. ACTION_SEND );
        String emailList[] = { "diandeveloper@gmail.com" };
        emailIntent.putExtra(android.content.Intent. EXTRA_EMAIL , emailList);
        emailIntent.setType( "plain/text" );
        emailIntent.putExtra(android.content.Intent. EXTRA_SUBJECT ,
                      "[diandeveloper - Mengenal Intent]" );
        startActivity(Intent. createChooser(emailIntent, "Send via"));
2013-11-05_17-00-36
2013-11-05_17-00-48
  • Intent untuk membuka halaman website
        String url = "https://diandeveloper.wordpress.com" ;
        Intent intent = new Intent(Intent. ACTION_VIEW);
        intent.setData(Uri. parse(url));
        startActivity(intent);
2013-11-05_17-03-23
  • Intent untuk menampilkan lokasi pada peta
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:-7.290192,112.737136?q=Surabaya"));
        startActivity(intent);

2013-11-16_15-39-17

2013-11-16_15-36-22

Android Activity

Versi 1.0

1. Pengertian Activity

Activity adalah komponen pada aplikasi Android yang menampilkan dan mengatur halaman aplikasi sebagai tempat interaksi antara pengguna dengan aplikasi, seperti membuat panggilan telepon, mengambil foto, mengirim pesan singkat, atau mengirim email. Sebuah Activity mengatur satu halaman user interface aplikasi. Sehingga jika sebuah aplikasi Android memiliki beberapa halaman user interface yang saling berinteraksi, berarti aplikasi tersebut memiliki beberapa Activity yang saling berinteraksi.

2. Membuat Activity

Activity merupakan sebuah class yang menghandle sebuah halaman user interface pada aplikasi Android. Untuk membuat sebuah Activity, kita lakukan dengan membuat sebuah class yang meng-extends class Activity. Bila kita membuat project aplikasi Android baru pada Android Development Tools, maka ada sebuah class yang bernama MainActivity.java yang tergenerate secara otomatis. Class ini meng-extends class Activity (MainActivity extends Activity) sehingga class ini merupakan sebuah Activity. Activity menampilkan halaman user interface dengan memanggil fungsi onCreate(). Fungsi ini dipanggil ketika class dibuat. Di dalam fungsi tersebut, kita dapat menentukan xml apa yang kita jadikan sebagai halaman user interface dengan memanggil fungsi setContentView() dengan parameter berupa xml halaman user interface, misalnya setContentView(R.layout.activity_main). Code dari class MainActivity adalah sebagai berikut.

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 

    } 
}

Activity ini menampilkan halaman user interface dari activity_main.xml yang menampilkan tulisan “Hello world!”. Jika kita menjalankannya maka akan tampil halaman seperti ini.

1

3. Menjalankan Activity Lain

Sering kali sebuah aplikasi Android memiliki lebih dari satu halaman user interface. Transisi antar halaman dapat dilakukan dengan pemanggilan Activity lain dari sebuah Activity. Misalnya Activity halaman utama memanggil Activity halaman profile sehingga terjadi transisi dari halaman utama menuju halaman profile. Pemanggilan Activity lain dapat dilakukan dengan memanggil fungsi startActivity() dengan mempassing parameter Intent. Intent adalah object yang mendefinisikan Activity apa yang akan kita jalankan.

Kita akan membuat dua halaman UI yaitu Halaman Utama dan Halaman Profile. Halaman Utama akan dihandle oleh ActivityUtama.java dan Halaman Profile akan dihandle oleh ActivityProfile.java. ActivityUtama.java akan memanggil ActivityProfile.java. Untuk membuatnya, terlebih dahulu kita buat xml layout dari kedua halaman tersebut.

Buat file halaman_utama.xml pada folder layout dan copy-paste code berikut pada file tersebut.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_margin="32dp"
        android:text="HALAMAN UTAMA" />

    <Button
        android:id="@+id/button_profile"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="PROFILE" />

</LinearLayout>
Buat file halaman_profile.xml pada folder layout dan copy-paste code berikut pada file tersebut.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_margin="32dp"
        android:text="HALAMAN PROFILE" />

</LinearLayout>
Kemudian kita buat dua class Activity yaitu class ActivityUtama.java dan ActivityProfile.java.
Buat class ActivityUtama.java dan copy-paste code berikut ini pada class tersebut.
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class ActivityUtama extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.halaman_utama);

		Button bProfile = (Button) findViewById(R.id.button_profile);
		bProfile.setOnClickListener(new View.OnClickListener() {
		    @Override
		    public void onClick(View arg0) {
		        Intent intent = new Intent(ActivityUtama.this, ActivityProfile.class);
			startActivity(intent);
		    }
		});
	}
}
Buat class ActivityProfile.java dan copy-paste code berikut ini pada class tersebut.
import android.app.Activity;
import android.os.Bundle;

public class ActivityProfile extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.halaman_profile);
	}
}
Kita harus mendefinisikan class Activity yang baru kita buat pada file Manifest dari aplikasi. Buka file AndroidManifest.xml pada project, hapus code mulai dari  <application  sampai dengan  </application>  dan ganti dengan code berikut ini.
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".ActivityUtama"
            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=".ActivityProfile" />
    </application>
Jalankan project, maka akan tampil halaman berikut ini.
2
Halaman Utama dihandle oleh ActivityUtama.java. Pada halaman tersebut, terdapat tombol Profile. Jika tombol tersebut ditekan, maka ActivityUtama.java akan menjalankan ActivityProfile.java yang menghandle Halaman Profile.
3
Jika pada Halaman Profile ditekan tombol Back, maka akan kembali pada Halaman Utama.

Android Layout

Versi 1.0

1. Mengenal Layout

Layout merupakan salah satu komponen user interface pada aplikasi Android yang berperan sebagai suatu grup yang terstruktur dari beberapa komponen user interface (view). Layout ini menggabungkan beberapa view seperti Button dan Text Fields atau yang lain yang disusun menjadi sebuah halaman aplikasi Android. Layout ada dua yaitu Linear Layout dan Relative Layout.

1.1. Linear Layout
Linear Layout adalah layout yang menggabungkan view dalam satu urutan secara vertikal atau horizontal. Linear Layout dibuat dengan elemen xlm <Linearlayout>. Urutan dari LinearLayout didefinisikan pada atribut android:orientation dengan value vertical atau horizontal. Contoh Linear Layout adalah sebagai berikut.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
1.2. Relative Layout
Relative Layout adalah layout yang menyusun view-view di dalamnya sebagai view anak secara relatif. Penyusunan view-view anak, dilakukan secara relatif terhadap sesama view anak atau relatif terhadap view induk. Relative Layout lebih fleksibel digunakan untuk membuat halaman user interface dibandingkan dengan Linear Layout.
Pengaturan posisi view yang relatif terhadap view lain, antara lain menggunakan atribut berikut ini:

  • android:layout_toRightOf
  • android:layout_toLeftOf
  • android:layout_below
  • android:layout_above

Pengaturan posisi view yang relatif terhadap view induk, antara lain menggunakan atribut berikut ini:

  • android:layout_alignParentTop
  • android:layout_alignParentBottom
  • android:layout_centerVertical
  • android:layout_centerHorizontal

Contoh penggunaan Relative Layout :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <EditText
        android:id="@+id/input1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/input2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/input1"
        android:layout_toLeftOf="@+id/button1" />

    <Button
        android:id="@+id/button1"
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@id/input1" />

    <Button
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/button1" />

</RelativeLayout>

2. Menampilkan Layout

Layout ditampailkan pada aplikasi dengan memanggil setContentView() di dalam fungsi onCreate() dengan memberikan parameter layout yang akan ditampilkan. Misalnya kita tampilkan Linear Layout dari contoh pada poin 1.1. di atas yang telah kita simpan pada file xml linear_layout.xml pada folder layout,  maka code dari fungsi onCreate() adalah sebagai berikut :
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.linear_layout);
    }
1
Untuk menampilkan Relative Layout pada contoh poin 2.2. di atas yang telah kita simpan pada file xml relative_layout.xml pada folder layout, maka code dari fungsi onCreate() adalah sebagai berikut :
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.relative_layout);
    }
2

Android Button

Versi 1.0

1. Mengenal Button

Button adalah perangkat user interface pada Android yang berupa tombol. Button merupakan salah satu hal wajib pada aplikasi Android. Karena banyak aktivitas pada aplikasi Android yang membutuhkan Button untuk mengeksekusinya, seperti Login, Logout, Pencarian, atau Menu. Button dapat berisi tulisan, gambar, atau kombinasi keduanya.

1.1. Button Text
Button Text adalah Button dengan tulisan yang dapat dibuat dengan elemen <Button> seperti berikut ini.
    <Button xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Pencarian" />

3

1.2. Image Button
Image Button adalah Button yang dengan tampilan sebuah gambar/image yang dapat dibuat dengan ImageButton. Gambar yang kita jadikan sebagai tombol dapat kita atur sesuai keinginan kita. Misalnya kita akan membuat tombol pencarian dengan memberikan gambar kaca pembesar seperti ini.
button_search
Tombol kita beri nama button_search.png dan kita letakkan pada folder res/drawable-hdpi pada project seperti ini.
1
ImageButton dapat dibuat dengan element <ImageButton> seperti berikut ini.
    <ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/button_search" />
2

Atribut android:src digunakan untuk mengambil file gambar pada ImageButton. ImageButton mengambil gambar yang bernama button_search.png pada folder drawable.

1.3 Button dengan Text dan Image
Button dengan Text dan Image bisa kita buat dengan elemen <Button> yang memakai atribut android:drawableLeft seperti berikut ini.
    <Button xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Pencarian"
        android:drawableLeft="@drawable/button_search" />

4

Atribut android:drawableLeft mengambil file gambar bernama button_search.png pada folder drawable seperti pada ImageButton.

2. Event Handling Pada Button

Ketika pengguna menekan Button, maka Button menerima event yang bernama on-click. Event ini bisa kita tangkap untuk menentukan reaksi apa yang timbul akibat Button yang ditekan. Misalnya kita buat tombol yang akan menampilkan suatu pesan setelah tombol tersebut ditekan. Kita buat dulu xml-nya seperti di bawah ini dan simpan pada file dengan nama button_event.xml pada folder layout.
    <Button xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/button_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Klik aja"
        android:drawableLeft="@drawable/love" />
Pada code tersebut ada atribut android:id=“@+id/button_1”. Atribut inilah yang dipakai untuk mengenali Button satu dengan lainnya. Button tersebut memiliki id yang bernama button_1. Selain xml, kita juga harus membuat code pemrograman di bawah ini. Buka class MainActivity.java, hapus fungsi onCreate() dan ganti dengan code di bawah ini.
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // menampilkan Button dengan event handler
        setContentView(R.layout.button_event);

        // Event handler pada Button
        Button button = (Button) findViewById(R.id.button_1);
        button.setOnClickListener(new View.OnClickListener() {		
                @Override
		public void onClick(View arg0) {
			Toast.makeText(MainActivity.this, 
					"Love will find you if you try", 
					Toast.LENGTH_LONG).show();
		}
	});
    }
Code tersebut mengambil object Button dari xml yang memiliki id bernama button_1. Fungsi setOnClickListener dari object Button yaitu menerima event klick yang kemudian diolah oleh fungsi onClick. Di dalam fungsi onClick inilah kita dapat menentukan reaksi yang timbul akibat Button yang diklick atau ditekan. Bila xml dan code diatas kita jalankan, maka akan menghasilkan tombol dan pesan yang tampil sesaat setelah tombol ditekan, seperti ini.
5
Yap, “Love will find you if you try” hadir sebagai penutup materi kali ini. Jadi buat yang lagi belajar bikin aplikasi Android dan masih jomblo, jangan menyerah, coba dan coba terus maka kamu akan berhasil membuat aplikasi Androidmu sekaligus mendapatkan cintamu. See you … 🙂