37
BAB VI MODUL IV Bab VI ini berisi tentang penerapan modul penggunaan Spinner, CheckBox, dan Radio Button dalam pemrogram mobile android. Berikut ini pembahasan mengenai teori-teori penggunaan Spinner, CheckBox, dan Radio Button dalam pemrogram mobile android. 6.1 Tujuan Praktikum Dalam melakukan sebuah praktikum, tentunya memiliki tujuan yang ingin diperoleh. Adapun tujuan dari praktikum pemrograman mobile pada modul IV tetntang penggunaan Spinner, CheckBox, dan Radio Button adalah sebagai berikut : 1. Mengetahui dan memahami konsep penggunaan Spinner, CheckBox, dan Radio Button dalam aplikasi android. 2. Mengetahui dan memahami cara-cara pengimplementasian Spinner, CheckBox, dan Radio Button dalam pemrograman mobile android. 3. Mampu menggunakan Spinner, CheckBox, dan Radio Button dalam aplikasi android. 6.2 Tinjauan Pustaka Adapun tinjauan pustaka yang digunakan pada praktikum integrasi migrasi sistem untuk modul pengelolaan utang piutang yakni sebagai berikut. 6.2.1 Spinner RadioButtons dan CheckButtons cocok digunakan dalam pilihan suatu set yang kecil. Jika pilihan sangat banyak maka dapat menggunakan widget lain seperti: listboxes, comboboxes, drop-down lists, picture galleries, dsb. Android memiliki framework data adapter yang memberikan interface umum untuk pilihan (selection) baik itu berupa static array maupun isi database. Selection views, merupakan widget untuk menampilkan daftar pilihan yang menggunakan adapter sebagai pengisi pilihan. Adapter yang mudah digunakan adalah ArrayAdapter, seperti contoh berikut :

BAB VI MODUL IV

Embed Size (px)

DESCRIPTION

mobile

Citation preview

Page 1: BAB VI MODUL IV

BAB VI

MODUL IV

Bab VI ini berisi tentang penerapan modul penggunaan Spinner,

CheckBox, dan Radio Button dalam pemrogram mobile android. Berikut ini

pembahasan mengenai teori-teori penggunaan Spinner, CheckBox, dan Radio

Button dalam pemrogram mobile android.

6.1 Tujuan Praktikum

Dalam melakukan sebuah praktikum, tentunya memiliki tujuan yang

ingin diperoleh. Adapun tujuan dari praktikum pemrograman mobile pada modul

IV tetntang penggunaan Spinner, CheckBox, dan Radio Button adalah sebagai

berikut :

1. Mengetahui dan memahami konsep penggunaan Spinner, CheckBox, dan

Radio Button dalam aplikasi android.

2. Mengetahui dan memahami cara-cara pengimplementasian Spinner,

CheckBox, dan Radio Button dalam pemrograman mobile android.

3. Mampu menggunakan Spinner, CheckBox, dan Radio Button dalam

aplikasi android.

6.2 Tinjauan Pustaka

Adapun tinjauan pustaka yang digunakan pada praktikum integrasi

migrasi sistem untuk modul pengelolaan utang piutang yakni sebagai berikut.

6.2.1 Spinner

RadioButtons dan CheckButtons cocok digunakan dalam pilihan suatu set

yang kecil. Jika pilihan sangat banyak maka dapat menggunakan widget lain

seperti: listboxes, comboboxes, drop-down lists, picture galleries, dsb. Android

memiliki framework data adapter yang memberikan interface umum untuk

pilihan (selection) baik itu berupa static array maupun isi database. Selection

views, merupakan widget untuk menampilkan daftar pilihan yang menggunakan

adapter sebagai pengisi pilihan. Adapter yang mudah digunakan adalah

ArrayAdapter, seperti contoh berikut :

Page 2: BAB VI MODUL IV

Gambar 6.1 Kode program penggunaan ArrayAdapter

Dalam Android spinner ekuivalen dengan drop down selector. Spinner

memiliki fungsi yang sama dengan ListView tetapi memiliki ruang yang lebih

kecil. Sama seperti ListView, menggunakan adapter untuk menghubungkan data

ke child views, yaitu dengan setAdapter( ). Penambahan listener pada object untuk

menangkap pilihan pada list dengan setOnItemSelectedListener( ). Menggunakan

fungsi setDropDownViewResource( ) untuk mengisi resource ID multi-line

selection list view.

Contoh penggunaan spinner dengan menggunakan layout dalam bentuk

simple list adalah seperti gambar 6.1 berikut.

Gambar 6.2 Penggunaan spinner dengan layout dalam bentuk simple list

Pada contoh yang ditunjukkan sesuai gambar 6.1 menggunakan XML

Layout dengan kode program seperti gambar 6.3 di bawah ini.

Page 3: BAB VI MODUL IV

Gambar 6.3 XML Layout untuk contoh sesuai gambar 6.1

Dari XML Layout yang dibuat menggunakan kode program 6.2, diolah

menggunakan kode program seperti gambar 6.4 di bawah ini yang menggunakan

bahasa pemrograman java yang berisi activity aplikasi.

Gambar 6.4 Activity aplikasi penggunaan spinner

Page 4: BAB VI MODUL IV

6.2.2 CheckBox

Checkbox merupakan widget dari salah satu tipe Button yang mempunyai

dua status yaitu checked dan unchecked yang memberi pilihan check jika

CheckBox tersebut dibuat group maka bisa dipilih atau bisa juga tidak dan bersifat

multiselect. Contoh script main.xml yang menggunakan CheckBox, seperti kode

program pada gambar 6.5 berikut.

Gambar 6.5 Script mail.xml penggunaan Checkbox

Untuk source code java yang berisi event habler untuk contoh penggunaan

checkbox adalah seperti kode program pada gambar 6.6 di bawah ini.

Page 5: BAB VI MODUL IV

Gambar 6.6 Source code java untuk event handler contoh penggunaan checkbox

Pada fungsi onClick, mengandung maksud, jika ChekBox01 berupa

ckCream dipilih, maka string yang ditampilkan adalah “cream”. Jika CheckBox

berupa Sugar dipilih, maka ditampung string berupa “sugar”. Kemudian string

tesebut ditampilkan dalam suatu pesan cepat melaui Toast. Tampilan contoh

penggunaan penggunaan checkbox ditunjukkan gambar 6.7.

Page 6: BAB VI MODUL IV

Gambar 6.7 Tampilan contoh penggunaan checkbox

6.2.3 Radio Button

Radio button adalah widget yang digunakan pada form bersifat selected

one atau hanya dipilih salah satu dari beberapa radio button. Seperti contoh

berikut ini.

Gambar 6.8 Contoh radion button

Untuk contoh di atas pada gambar 6.3, digunakan kumpulan RadioButton

yaitu RadioGroup dengan pilihan tiga item. Penggunaan RadioGroup hanya bisa

memilih satu saja sedangkan jika tidak di-group maka dapat memilih lebih dari

satu. Contoh script main.xml yang menggunakan Radio Button, seperti kode

program pada gambar 6.9 berikut

Page 7: BAB VI MODUL IV

Gambar 6.9 Script main.xml contoh penggunaan radio button

Untuk source code java yang berisi event handler untuk contoh

penggunaan checkbox adalah seperti kode program pada gambar 6.10 di bawah

ini.

Page 8: BAB VI MODUL IV

Gambar 6.10 Source code java untuk event handler contoh penggunaan radio button

Dari contoh penggunaan ini, Toast untuk menampilkan pesan singkat

seperti pada gambar 6.11. Pesan–pesan tersebut akan tampil jika memilih salah

satu radio button atau checkbutton.

Page 9: BAB VI MODUL IV

Gambar 6.11 Tampilan contoh penggunaan radion button hasil dari kode program 6.6 dan 6.7

6.3 Analisa dan Pembahasan

Pada praktikum ini membahas tentang penggunaan Spinner, CheckBox,

dan Radio button. Dalam hal ini aplikasi yang dibuat adalah pengisian biodata,

yang dapat menampilkan informasi.user name, gender, hoby, dan job pengguna

sesuai informasi yang telah dimasukkan.

6.3.1 Penggunaan Spinner

Dalam pembahasan spinner kali ini, spinner digunakan sebagai selected

pemilihan cepat dengan item yang jumlahnnya banyak untuk memilih job atau

pekerjaan pengguna.

Page 10: BAB VI MODUL IV

Kode Progam 6.1 Script layout xml untu menampilkan snipper

Script diatas digunakan untuk menampilkan widget spinner, di Android

Layout XML. Kemudian unutk membuat String array di strings.xml seperti kode

program 6.2 berikut :

Kode Progam 6.2 Script string.xml untuk String array dari snipper

String array digunakan sebagai item dari spinner. Dalam hal ini spinner

memiliki empat item pilihan, yaitu student, employee, businessman, dan idleness

Untuk melakukan pengisian item ke dalam spinner digunakanlah ArrayAdapter

dengan kode program 6.3 berikut.

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@id/user_hoby_layout"

android:id="@+id/user_job_layout"

android:orientation="horizontal">

<TextView android:layout_width="125dp"

android:layout_height="wrap_content"

android:textSize="18sp"

android:text="@string/user_job"

android:id="@+id/user_job_text" />

<TextView android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="18sp"

android:text="@string/separator"

android:id="@+id/user_job_separator" />

<Spinner

android:id="@+id/user_job"

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

</LinearLayout>

<string-array name="job">

<item></item>

<item>Student</item>

<item>Employee</item>

<item>Businessman</item>

<item>Idleness</item>

</string-array>

Page 11: BAB VI MODUL IV

Kode Progam 6.3 Handler untuk mengisi item spinner

6.3.2 Penggunaan CheckBox

Checkbox digunakan pada form yang bersifat check dan bersifat

multiselect. Oleh karena itu dalam hal ini checkbox cocok digunakan untuk

menampung informasi hoby pengguna, dimana terdapat kemungkinan pengguna

memiliki lebih dari satu hoby.

Kode Progam 6.4 Script layout xml untu menampilkan checkbox

Spinner jobSpinner = (Spinner) findViewById(R.id.user_job);

ArrayAdapter jobAdapater =

ArrayAdapter.createFromResource(this, R.array.job,

android.R.layout. simple_spinner_item);

jobAdapater.setDropDownViewResource(android.R.layout.simple_spi

nner_dropdown_item);

jobSpinner.setAdapter(jobAdapater);

<CheckBox android:id="@+id/user_hoby_culinary"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:layout_gravity="left"

android:gravity="left"

android:text="@string/user_hoby_culinary"

android:onClick="onCheckboxClicked"/>

<CheckBox android:id="@+id/user_hoby_music"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:layout_gravity="left"

android:layout_toRightOf="@id/user_hoby_culinary"

android:gravity="left"

android:text="@string/user_hoby_music"

android:onClick="onCheckboxClicked"/>

<CheckBox android:id="@+id/user_hoby_sport"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:layout_gravity="left"

android:layout_below="@id/user_hoby_culinary"

android:gravity="left"

android:text="@string/user_hoby_sport"

android:onClick="onCheckboxClicked"/>

<CheckBox android:id="@+id/user_hoby_other"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:layout_gravity="left"

android:layout_below="@id/user_hoby_music"

android:layout_toRightOf="@id/user_hoby_sport"

android:gravity="left"

android:text="@string/user_hoby_other"

android:onClick="onCheckboxClicked"/>

Page 12: BAB VI MODUL IV

Kode program 6.4 diatas digunakan untuk menampilkan checkbox di

Android Layout XML. Pada checkbox ini terdapat empat pilihan item yang dapat

di-check, yaitu culinary, music, sport, dan other. Agar checkbox dapat bekerja

untuk menampung informasi saat terdapat item yang di-check maka diperlukan

handler. Kode program 6.5 di bawah ini berisi handler untuk checkbox.

Kode Progam 6.5 Handler untuk checkbox

public void onCheckboxClicked(View v) {

boolean checked = ((CheckBox) v).isChecked();

switch (v.getId()) {

case R.id.user_hoby_culinary:

if(checked) {

if(hoby_result.length() > 0){

hoby_result.append(", Culinary");

} else{

hoby_result.append("Culinary");

}

}

break;

case R.id.user_hoby_music:

if(checked) {

if(hoby_result.length() > 0){

hoby_result.append(", Music");

} else{

hoby_result.append("Music");

}

}

break;

case R.id.user_hoby_sport:

if(checked) {

if(hoby_result.length() > 0){

hoby_result.append(", Sport");

} else{

hoby_result.append("Sport");

}

}

break;

case R.id.user_hoby_other:

if(checked) {

if(hoby_result.length() > 0){

hoby_result.append(", Other");

} else{

hoby_result.append("Other");

}

}

break;

}

hoby = hoby_result.toString();

}

Page 13: BAB VI MODUL IV

6.3.3 Radio Button

Radio button merupakan widget yang bersifat selected one atau hanya

dipilih salah satu dari beberapa radio button. Jadi sangat cocok digunakan untuk

menampung informasi tetang gender atau jenis kelamin pengguna.

Kode Progam 6.6 Script layout xml untu menampilkan radio button

Pada kode program 6.6 di atas terdapat dua pilihan radio button untuk

gender, yaitu male dan female. Supaya bisa bekerja menampung informasi saat

salah satu pilihan radio button dipilih perlu dibuat handle pada kode program java

seperti kode prorgram 6.7 berikut.

Kode Progam 6.7 Handler untuk radio button

6.3.3 Kode Program Secara Keseluruhan

Dengan menggabungkan kode program penggunaan Spinner, CheckBox,

dan Radio Button di atas, terbentuklah aplikasi pengisian biodata. Pada kode

program 6.8 berikut merupakan kode program untuk layout xml aplikasi.

<RadioGroup

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

<RadioButton android:id="@+id/user_gender_male"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:text="@string/user_gender_male"

android:onClick="onRadioButtonClicked"/>

<RadioButton android:id="@+id/user_gender_female"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:text="@string/user_gender_female"

android:onClick="onRadioButtonClicked"/>

</RadioGroup>

public void onRadioButtonClicked(View v) {

boolean checked = ((RadioButton) v).isChecked();

switch(v.getId()) {

case R.id.user_gender_male:

if(checked) gender = "Male";

break;

case R.id.user_gender_female:

if(checked) gender = "Female";

break;

}

}

Page 14: BAB VI MODUL IV

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

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:paddingBottom="@dimen/activity_vertical_margin"

tools:context=".MainActivity">

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:id="@+id/user_name_layout"

android:orientation="horizontal"

android:paddingBottom="5dp"

android:paddingTop="5dp">

<TextView android:layout_width="125dp"

android:layout_height="wrap_content"

android:textSize="18sp"

android:text="@string/user_name"

android:id="@+id/user_name_text" />

<TextView android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="18sp"

android:text="@string/separator"

android:id="@+id/user_name_separator" />

<EditText android:id="@+id/user_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="18sp"

android:background="@android:color/transparent"

android:layout_marginLeft="5dp"

android:singleLine="true"

android:hint="@string/user_name"

android:inputType="text" />

</LinearLayout>

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@id/user_name_layout"

android:id="@+id/user_gender_layout"

android:orientation="horizontal">

<TextView android:layout_width="125dp"

android:layout_height="wrap_content"

android:textSize="18sp"

android:text="@string/user_gender"

android:id="@+id/user_gender_text" />

<TextView android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="18sp"

android:text="@string/separator"

Page 15: BAB VI MODUL IV

android:id="@+id/user_gender_separator" />

<RadioGroup

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

<RadioButton android:id="@+id/user_gender_male"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:text="@string/user_gender_male"

android:onClick="onRadioButtonClicked"/>

<RadioButton android:id="@+id/user_gender_female"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:text="@string/user_gender_female"

android:onClick="onRadioButtonClicked"/>

</RadioGroup>

</LinearLayout>

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@id/user_gender_layout"

android:id="@+id/user_hoby_layout"

android:orientation="horizontal">

<TextView android:layout_width="125dp"

android:layout_height="wrap_content"

android:textSize="18sp"

android:text="@string/user_hoby"

android:id="@+id/user_hoby_text" />

<TextView android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="18sp"

android:text="@string/separator"

android:id="@+id/user_hoby_separator" />

<RelativeLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/user_hoby_checkbox"

android:layout_gravity="left"

android:gravity="left"

android:textAlignment="gravity">

<CheckBox android:id="@+id/user_hoby_culinary"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:layout_gravity="left"

android:gravity="left"

android:text="@string/user_hoby_culinary"

android:onClick="onCheckboxClicked"/>

<CheckBox android:id="@+id/user_hoby_music"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:layout_gravity="left"

android:layout_toRightOf="@id/user_hoby_culinary"

android:gravity="left"

Page 16: BAB VI MODUL IV

android:text="@string/user_hoby_music"

android:onClick="onCheckboxClicked"/>

<CheckBox android:id="@+id/user_hoby_sport"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:layout_gravity="left"

android:layout_below="@id/user_hoby_culinary"

android:gravity="left"

android:text="@string/user_hoby_sport"

android:onClick="onCheckboxClicked"/>

<CheckBox android:id="@+id/user_hoby_other"

android:layout_width="100dp"

android:layout_height="wrap_content"

android:layout_gravity="left"

android:layout_below="@id/user_hoby_music"

android:layout_toRightOf="@id/user_hoby_sport"

android:gravity="left"

android:text="@string/user_hoby_other"

android:onClick="onCheckboxClicked"/>

</RelativeLayout>

</LinearLayout>

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@id/user_hoby_layout"

android:id="@+id/user_job_layout"

android:orientation="horizontal">

<TextView android:layout_width="125dp"

android:layout_height="wrap_content"

android:textSize="18sp"

android:text="@string/user_job"

android:id="@+id/user_job_text" />

<TextView android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="18sp"

android:text="@string/separator"

android:id="@+id/user_job_separator" />

<Spinner

android:id="@+id/user_job"

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

</LinearLayout>

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/user_job_layout"

android:text="@string/button_set"

android:id="@+id/button_set"

android:layout_centerVertical="true"

android:layout_centerHorizontal="true"

android:layout_marginTop="10dp" />

<TextView

Page 17: BAB VI MODUL IV

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/biodata_set"

android:layout_below="@+id/button_set"

android:layout_centerHorizontal="true"

android:layout_marginTop="5dp"

android:hint="@string/user_biodata"

android:textSize="18sp" />

</RelativeLayout>

Kode Progam 6.8 Layout xml untuk tampilan utama aplikasi

Dengan menggunakan layout xml pada kode program 6.8 di atas dibuatlah

kode program java untuk activty aplikasi yang tunjukkan dengan kode prgam 6.9

berikut.

package com.example.yo.modul4;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.CheckBox;

import android.widget.EditText;

import android.widget.RadioButton;

import android.widget.Spinner;

import android.widget.TextView;

import android.widget.Toast;

import java.lang.reflect.Array;

public class MainActivity extends Activity {

private Button buttonSet;

private EditText userName;

private TextView biodataSet;

private Spinner jobSpinner;

private StringBuffer hoby_result = new StringBuffer();

private String hoby, gender;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

userName = (EditText) findViewById(R.id.user_name);

biodataSet = (TextView) findViewById(R.id.biodata_set);

jobSpinner = (Spinner) findViewById(R.id.user_job);

ArrayAdapter jobAdapater =

ArrayAdapter.createFromResource(this, R.array.job,

Page 18: BAB VI MODUL IV

android.R.layout. simple_spinner_item);

jobAdapater.setDropDownViewResource(android.R.layout.simple_spinn

er_dropdown_item);

jobSpinner.setAdapter(jobAdapater);

buttonSet = (Button) findViewById(R.id.button_set);

buttonSet.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

biodataSet.setText("User Name : " +

userName.getText().toString() + "\nGender : " + gender

+ "\nHoby : " + hoby + "\nJob : " +

jobSpinner.getSelectedItem().toString());

}

});

}

public void onCheckboxClicked(View v) {

boolean checked = ((CheckBox) v).isChecked();

switch (v.getId()) {

case R.id.user_hoby_culinary:

if(checked) {

if(hoby_result.length() > 0){

hoby_result.append(", Culinary");

} else{

hoby_result.append("Culinary");

}

}

break;

case R.id.user_hoby_music:

if(checked) {

if(hoby_result.length() > 0){

hoby_result.append(", Music");

} else{

hoby_result.append("Music");

}

}

break;

case R.id.user_hoby_sport:

if(checked) {

if(hoby_result.length() > 0){

hoby_result.append(", Sport");

} else{

hoby_result.append("Sport");

}

}

break;

case R.id.user_hoby_other:

if(checked) {

if(hoby_result.length() > 0){

hoby_result.append(", Other");

} else{

hoby_result.append("Other");

}

}

break;

}

Page 19: BAB VI MODUL IV

hoby = hoby_result.toString();

}

public void onRadioButtonClicked(View v) {

boolean checked = ((RadioButton) v).isChecked();

switch(v.getId()) {

case R.id.user_gender_male:

if(checked) gender = "Male";

break;

case R.id.user_gender_female:

if(checked) gender = "Female";

break;

}

}

}

Kode Progam 6.9 Activity java aplikasi

Untuk string yang digunakan dalam aplikasi, semuanya tersimpan pada

kode program String XML sebagaiman kode program 6.10 berikut.

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="app_name">Modul4</string>

<string name="hello_world">Hello world!</string>

<string name="action_settings">Settings</string>

<string name="separator"> : </string>

<string name="user_name">User Name</string>

<string name="user_gender">Gender</string>

<string name="user_gender_male">Male</string>

<string name="user_gender_female">Female</string>

<string name="user_hoby">Hoby</string>

<string name="user_hoby_sport">Sport</string>

<string name="user_hoby_culinary">Culinary</string>

<string name="user_hoby_music">Music</string>

<string name="user_hoby_other">Other</string>

<string name="user_job">Job</string>

<string-array name="job">

<item></item>

<item>Student</item>

<item>Employee</item>

<item>Businessman</item>

<item>Idleness</item>

</string-array>

<string name="button_set">SET</string>

<string name="user_biodata">User Biodata</string>

</resources>

Kode Progam 6.10 String xml aplikasi

Page 20: BAB VI MODUL IV

6.3.4 Aplikasi Proyek Kelompok

Dalam praktikum pemrograman mobile ini, aplikasi yang dibuat adalah

MemoPad, yaitu semacam catatan yang dapat digunakan pengguna untuk

menyimpan catatan penting. Dalam aplikasi MemoPad pengguna dapat membuat

atau menambah catatan seta, mengubah dan menghapus catatanyang talah

dibuatnya.

Gambar 6.12 Flowchart aplikasi MemoPad

Bardasrakan flowchart gambar 6.12 di atas, aplikasi MemoPad memiliki

empat fungsi utama, yaitu menampilkan, membuat, mengubah, dan menghapus

catatan pengguna. Untuk itu terdapat dua layout utama pada aplikasi Memopad

ini, yaitu notelist untuk menampilkan daftar catatan dan note_edit untuk

mengubah atau membuat catatan. Selain itu ada satu layout tambahan layout

untuk membantu dalam menampilkan catata, yaitu notes_row yang nantinya akan

dimasukkan ke dalam ListView yang ada dalam notelist.

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/notelist">

<ListView

android:id="@android:id/list"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_above="@+id/btmLayout"

MULAI

Tampilkan

Daftar

Catatan

yang Telah

Dibuat

Ubah

Catatan

Tambah

Catatan

Tampilkan

Judul dan

Isi Catatan

Masukkan

Judul atau

Isi Catatan

yang Baru

Hapus

Catatan

Simpan

Catatan

Simpan Catatan

Hapus Catatan

SELESAI

`Ya

Tidak Tidak

`Ya `Ya

`Ya

Tidak

Page 21: BAB VI MODUL IV

android:background="#FFF9C8"

android:divider="#D3D3D3"

android:dividerHeight="1sp"

android:footerDividersEnabled="true" />

<LinearLayout

android:id="@+id/btmLayout"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:gravity="center"

android:layout_alignParentBottom="true"

android:layout_marginBottom="3dp"

android:layout_marginTop="10dp"

android:background="#ffffffff">

<Button

android:id="@+id/addnotebutton"

android:layout_width="50dp"

android:layout_height="wrap_content"

android:background="@drawable/create_note" />

</LinearLayout>

</RelativeLayout>

Kode Progam 6.11 Kode xml untuk Layout notelist

Kode program 6.11 merupakan kode program xml untuk layout notelist.

Berdasarkan kode program 6.11 tersebut, terdapat dua id utama, yaitu list yang

merupakan ListView untuk daftar tampilan catatan yang telah dibuat dan

addbuttonnote sebagai tombol untuk membuat catatan baru.

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_marginLeft="10sp"

android:textSize="25sp"

android:hint="@string/no_title"

android:id="@+id/text1"/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize = "25sp"

android:id="@+id/date_row"

android:layout_alignParentRight="true"

android:layout_marginRight="10sp"/>

</RelativeLayout>

Kode Progam 6.12 Kode xml untuk Layout notesrow

Page 22: BAB VI MODUL IV

Pada kode program xml untuk layout notesrow yang ditunjukkan kode

program 6.12 di atas merupakan layout untuk menampung informasi setiap

catatan yang telah dibuat yang mana nantinya akan dimasukkan ke dalam

ListView pada layout notelist. Terdapat dua id utama berupa TextView, yaitu text1

untuk menampung title atau judul catatan dan date_row untuk manampung

tanggal pembuatan atau pengubahan terakhir catatan.

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#FFF9C8">

<RelativeLayout

android:id="@+id/toplayout"

android:background="@drawable/notetop"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:paddingBottom="5dp"

android:paddingLeft="5dp"

android:paddingTop="5dp" >

<TextView android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="18sp"

android:text="@string/title"

android:id="@+id/title_text1" />

<EditText android:id="@+id/title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="18sp"

android:hint="@string/no_title"

android:layout_toRightOf="@+id/title_text1"

android:background="@android:color/transparent"

android:layout_marginLeft="5dp"

android:singleLine="true"

android:imeOptions="actionNext"/>

<TextView

android:id="@+id/notelist_date"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:paddingRight="10sp"

android:textSize="18sp" />

</RelativeLayout>

<view

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/body"

Page 23: BAB VI MODUL IV

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_below="@+id/toplayout"

class="com.example.yo.memopad.NoteEdit$LineEditText"

android:background="@android:color/transparent"

android:capitalize="sentences"

android:fadingEdge="vertical"

android:gravity="top"

android:padding="5dp"

android:scrollbars="vertical"

android:textSize="22sp" />

</RelativeLayout>

Kode Progam 6.12 Kode xml untuk Layout note_edit

Untuk layout pengubahan catatan ditunjukkan dengan kode program 6.12.

Terdapat tiga id utama, yaitu title yang berupa EditText untuk memasukkan title

atau judul catatan, notelist_date yang berupa TextView untuk tanggal pembuatan

atau pengubahan catatan, dan body yang berupa view LineEditText untuk

menampung body atau isi catatan.

Selain kode xml layout untuk tampilan apilkasi, tedapat juga kode xml

menu yang digunakan untuk membuat menu dapat digunakan pada aplikasi.

Dalam hal ini digunkan dua buah kode xml menu, yaitu notelist_menu untuk

menu pada layout notelist dan noteedit_menui untuk layout note_edit.

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android"

>

<item android:id="@+id/menu_about"

android:orderInCategory="1000"

android:showAsAction="never"

android:title="@string/about"/>

</menu>

Kode Progam 6.13 Kode xml menu untuk notelist_menu

Pada kode program 6.13 di atas merupakan menu untuk layout notelist.

terdapat satu buah id menu, yaitu menui_about yang nantinya digunakan untuk

manampilkan informasi tentang aplikasi.

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android"

>

<item android:id="@+id/menu_save"

android:icon="@drawable/ic_menu_save"

android:alphabeticShortcut='s'

android:title="@string/save_menu_noteedit"

android:showAsAction="ifRoom|withText" />

<item android:id="@+id/menu_delete"

Page 24: BAB VI MODUL IV

android:icon="@drawable/ic_menu_delete"

android:title="@string/delete_menu_noteedit"

android:showAsAction="ifRoom|withText" />

<item android:id="@+id/menu_about"

android:orderInCategory="100"

android:showAsAction="never"

android:title="@string/about"/>

</menu>

Kode Progam 6.14 Kode xml menu untuk noteedit_menu

Kode program 6.14 merupakan kode xml menu untuk layout note_edit.

Terdapat tiga id menu, yaitu menu_save untuk menyimpan catatan, menu_delete

untuk menghapus catan, dan menu_abouti untuk menampilkan informasi tentang

aplikasi.

Terdapat juga kode xml string yang digunakan untuk menampung string

yang digunakan dalam aplikasi terutam pada layout. Kode program 6.15 berikut

merupakan kode xml string yang digunakan dalam aplikasi.

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="app_name">MemoPad</string>

<string name="about">About</string>

<string name="title">Title</string>

<string name="no_title">Title</string>

<string name="menu_delete">Delete Item</string>

<string name="edit_note">Edit Note</string>

<string name="save_menu_noteedit">Save</string>

<string name="delete_menu_noteedit">Delete</string>

<string name="about_us">

\nKelompok 9 :

\n1. Setyo Hadi Kusumo (1204505039)

\n2. Andrew Martin Setio (1204505041)

\n3. I Putu Andreas Waranu (1204505042)

\n4. Ni Kadek Rahayu Widya Utami (1204505043)

\n5. Firnandha Yusuf Pryambudi (1204505044)

</string>

</resources>

Kode Progam 6.14 Kode xml menu untuk string

Selanjutnya terdapat kode java yang digunakan untuk melakukan activity

yang menjalankan aplikasi. Dalam aplikasi ini terdapat tiga kode java, yaitu

NoteList.java, NoteEdit.java, dan NoteDbAdapter.

package com.example.yo.memopad;

import android.os.Bundle;

import android.app.AlertDialog;

import android.app.ListActivity;

Page 25: BAB VI MODUL IV

import android.content.DialogInterface;

import android.content.Intent;

import android.database.Cursor;

import android.view.ContextMenu;

import android.view.ContextMenu.ContextMenuInfo;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.ListView;

import android.widget.SimpleCursorAdapter;

import android.widget.TextView;

import android.widget.AdapterView.AdapterContextMenuInfo;

public class NoteList extends ListActivity {

private static final int ACTIVITY_CREATE=0;

private static final int ACTIVITY_EDIT=1;

private static final int DELETE_ID = Menu.FIRST;

private int mNoteNumber = 1;

private NotesDbAdapter mDbHelper;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.notelist);

mDbHelper = new NotesDbAdapter (this);

mDbHelper.open();

fillData();

registerForContextMenu(getListView());

Button addnote =

(Button)findViewById(R.id.addnotebutton);

addnote.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

createNote();

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar

if it is present.

getMenuInflater().inflate(R.menu.notelist_menu, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.menu_about:

AlertDialog.Builder dialog = new

AlertDialog.Builder(NoteList.this);

dialog.setTitle("About");

Page 26: BAB VI MODUL IV

dialog.setMessage(R.string.about_us);

dialog.setPositiveButton("OK", new

DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog,

int which) {

dialog.cancel();

}

});

dialog.show();

return true;

default:

return super.onOptionsItemSelected(item);

}

}

private void createNote() {

Intent i = new Intent(this, NoteEdit.class);

startActivityForResult(i, ACTIVITY_CREATE);

}

@Override

protected void onListItemClick(ListView l, View v, int

position, long id) {

super.onListItemClick(l, v, position, id);

Intent i = new Intent(this, NoteEdit.class);

i.putExtra(NotesDbAdapter.KEY_ROWID, id);

startActivityForResult(i, ACTIVITY_EDIT);

}

private void fillData() {

// Get all data

Cursor notesCursor = mDbHelper.fetchAllNotes();

startManagingCursor(notesCursor);

String[] from = new String[] { NotesDbAdapter.KEY_TITLE

,NotesDbAdapter.KEY_DATE};

int[] to = new int[] { R.id.text1 ,R.id.date_row};

// Array adapter

SimpleCursorAdapter notes =

new SimpleCursorAdapter(this,

R.layout.notes_row, notesCursor, from, to);

setListAdapter(notes);

}

@Override

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo) {

super.onCreateContextMenu(menu, v, menuInfo);

menu.add(0, DELETE_ID, 0, R.string.menu_delete);

}

@Override

public boolean onContextItemSelected(MenuItem item) {

Page 27: BAB VI MODUL IV

switch(item.getItemId()) {

case DELETE_ID:

AdapterContextMenuInfo info =

(AdapterContextMenuInfo) item.getMenuInfo();

mDbHelper.deleteNote(info.id);

fillData();

return true;

}

return super.onContextItemSelected(item);

}

@Override

protected void onActivityResult(int requestCode, int

resultCode, Intent intent) {

super.onActivityResult(requestCode, resultCode, intent);

fillData();

}

}

Kode Progam 6.15 Kode java NoteList.java

Kode program 6.15 di atas merupakan kode program untuk NoteList.java.

NoteList.java berfungsi untuk menjalankan tampulan utama aplikasi yang berisi

daftar catatan yangtelah dibuat menggunakan layout notelist.

package com.example.yo.memopad;

/**

* Created by Yo on 15/01/2015.

*/

import java.text.SimpleDateFormat;

import java.util.Date;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.Context;

import android.content.DialogInterface;

import android.database.Cursor;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Rect;

import android.os.Bundle;

import android.util.AttributeSet;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.EditText;

import android.widget.TextView;

public class NoteEdit extends Activity{

public static int numTitle = 1;

public static String curDate = "";

public static String curText = "";

Page 28: BAB VI MODUL IV

private EditText mTitleText;

private EditText mBodyText;

private TextView mDateText;

private Long mRowId;

private Cursor note;

private NotesDbAdapter mDbHelper;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mDbHelper = new NotesDbAdapter(this);

mDbHelper.open();

setContentView(R.layout.note_edit);

setTitle(R.string.app_name);

mTitleText = (EditText) findViewById(R.id.title);

mBodyText = (EditText) findViewById(R.id.body);

mDateText = (TextView) findViewById(R.id.notelist_date);

long msTime = System.currentTimeMillis();

Date curDateTime = new Date(msTime);

SimpleDateFormat formatter = new

SimpleDateFormat("d'/'M'/'y");

curDate = formatter.format(curDateTime);

mDateText.setText(""+curDate);

mRowId = (savedInstanceState == null) ? null :

(Long)

savedInstanceState.getSerializable(NotesDbAdapter.KEY_ROWID);

if (mRowId == null) {

Bundle extras = getIntent().getExtras();

mRowId = extras != null ?

extras.getLong(NotesDbAdapter.KEY_ROWID)

: null;

}

populateFields();

}

public static class LineEditText extends EditText{

// we need this constructor for LayoutInflater

public LineEditText(Context context, AttributeSet attrs)

{

super(context, attrs);

mRect = new Rect();

mPaint = new Paint();

mPaint.setStyle(Paint.Style.FILL_AND_STROKE);

mPaint.setColor(Color.BLUE);

}

private Rect mRect;

Page 29: BAB VI MODUL IV

private Paint mPaint;

@Override

protected void onDraw(Canvas canvas) {

int height = getHeight();

int line_height = getLineHeight();

int count = height / line_height;

if (getLineCount() > count)

count = getLineCount();

Rect r = mRect;

Paint paint = mPaint;

int baseline = getLineBounds(0, r);

for (int i = 0; i < count; i++) {

canvas.drawLine(r.left, baseline + 1, r.right,

baseline + 1, paint);

baseline += getLineHeight();

super.onDraw(canvas);

}

}

}

@Override

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

saveState();

outState.putSerializable(NotesDbAdapter.KEY_ROWID,

mRowId);

}

@Override

protected void onPause() {

super.onPause();

saveState();

}

@Override

protected void onResume() {

super.onResume();

populateFields();

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar

if it is present.

getMenuInflater().inflate(R.menu.noteedit_menu, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

Page 30: BAB VI MODUL IV

switch (item.getItemId()) {

case R.id.menu_about:

/* Here is the introduce about myself */

AlertDialog.Builder dialog = new

AlertDialog.Builder(NoteEdit.this);

dialog.setTitle("About");

dialog.setMessage(R.string.about_us);

dialog.setPositiveButton("OK", new

DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog,

int which) {

dialog.cancel();

}

});

dialog.show();

return true;

case R.id.menu_delete:

if(note != null){

note.close();

note = null;

}

if(mRowId != null){

mDbHelper.deleteNote(mRowId);

}

finish();

return true;

case R.id.menu_save:

saveState();

finish();

default:

return super.onOptionsItemSelected(item);

}

}

private void saveState() {

String title = mTitleText.getText().toString();

String body = mBodyText.getText().toString();

if(mRowId == null){

long id = mDbHelper.createNote(title, body,

curDate);

if(id > 0){

mRowId = id;

}else{

Log.e("saveState","failed to create note");

}

}else{

if(!mDbHelper.updateNote(mRowId, title, body,

curDate)){

Log.e("saveState","failed to update note");

}

}

}

Page 31: BAB VI MODUL IV

private void populateFields() {

if (mRowId != null) {

note = mDbHelper.fetchNote(mRowId);

startManagingCursor(note);

mTitleText.setText(note.getString(

note.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));

mBodyText.setText(note.getString(

note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));

curText = note.getString(

note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY));

}

}

}

Kode Progam 6.16 Kode java NoteEdit.java

Pada kode program 6.16 menunjukkan kode program untuk NoteEdit.java.

NoteEdit.java berguna untuk melakukan pengubahan atau pembuatan catatan

dengan menggunakan layout note_edit.

package com.example.yo.memopad;

/**

* Created by Yo on 15/01/2015.

*/

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

public class NotesDbAdapter {

public static final String KEY_TITLE = "title";

public static final String KEY_DATE = "date";

public static final String KEY_BODY = "body";

public static final String KEY_ROWID = "_id";

private static final String TAG = "NotesDbAdapter";

private DatabaseHelper mDbHelper;

private SQLiteDatabase mDb;

private static final String DATABASE_CREATE =

"create table notes (_id integer primary key

autoincrement, "

+ "title text not null, body text not null,

date text not null);";

private static final String DATABASE_NAME = "data";

Page 32: BAB VI MODUL IV

private static final String DATABASE_TABLE = "notes";

private static final int DATABASE_VERSION = 2;

private final Context mCtx;

private static class DatabaseHelper extends SQLiteOpenHelper

{

DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null,

DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(DATABASE_CREATE);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion,

int newVersion) {

Log.w(TAG, "Upgrading database from version " +

oldVersion + " to "

+ newVersion + ", which will destroy all old

data");

db.execSQL("DROP TABLE IF EXISTS notes");

onCreate(db);

}

}

public NotesDbAdapter(Context ctx) {

this.mCtx = ctx;

}

public NotesDbAdapter open() throws SQLException {

mDbHelper = new DatabaseHelper(mCtx);

mDb = mDbHelper.getWritableDatabase();

return this;

}

public void close() {

mDbHelper.close();

}

public long createNote(String title, String body, String

date) {

ContentValues initialValues = new ContentValues();

initialValues.put(KEY_TITLE, title);

initialValues.put(KEY_BODY, body);

initialValues.put(KEY_DATE, date);

return mDb.insert(DATABASE_TABLE, null, initialValues);

}

public boolean deleteNote(long rowId) {

return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" +

rowId, null) > 0;

Page 33: BAB VI MODUL IV

}

public Cursor fetchAllNotes() {

return mDb.query(DATABASE_TABLE, new String[]

{KEY_ROWID, KEY_TITLE,

KEY_BODY,KEY_DATE}, null, null, null, null,

null);

}

public Cursor fetchNote(long rowId) throws SQLException {

Cursor mCursor =

mDb.query(true, DATABASE_TABLE, new String[]

{KEY_ROWID,

KEY_TITLE, KEY_BODY,KEY_DATE},

KEY_ROWID + "=" + rowId, null,

null, null, null, null);

if (mCursor != null) {

mCursor.moveToFirst();

}

return mCursor;

}

public boolean updateNote(long rowId, String title, String

body,String date) {

ContentValues args = new ContentValues();

args.put(KEY_TITLE, title);

args.put(KEY_BODY, body);

args.put(KEY_DATE, date);

return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "="

+ rowId, null) > 0;

}

}

Kode Progam 6.17 Kode java NoteDbAdapter.java

Kode program 6.17 di atas menujukkan kode program

NoteDbAdapter.java. NoteDbAdapter yang merupakan adapater database yang

digunakan dalam aplikasi untuk menyimpan data catatan yang telah dibuat.

6.4 Uji Coba

Pada bagian ini berisi pengujian aplikasi dengan menggunakan kode

program yang telah dijelaskan pada bagian analisa dan pembahasan. Dalam uji

coba ini digunakan aplikasi emulator android yaitu Geniemotion dengan OS

Android 4.1.1.

Page 34: BAB VI MODUL IV

6.4.1 Penggunaan Spinner, CheckBox, dan Radio Button

Pada bagian analisa dan pembahasan dijelaskan pembuatan dan

penggunaan spinner, checkbox, dan radio button pada aplikasi andoid. Berikut ini

pengujian aplikasi dengan menggunakan kode program yang terdapat pada bagian

analisa dan pembahasan di atas.

Gambar 6.13 Tampilan awal aplikasi

Pada gambar 6.13 menunjukkan tampilkan awal dari aplikasi yang telah

dibuat. Aplikasi ini bekerja dengan cara menampilkan informasi teks User

Biodata sesuai dengan informasi yang telah dimasukkan oleh pengguna. Berikut

ini hasil kerja aplikasi dalam menampilkan informasi biodata pengguna yang

ditunjukkan pada gambar 6.14.

Page 35: BAB VI MODUL IV

Gambar 6.14 Tampilan hasil kerja aplikasi dalam menampilkan bioata pengguna

6.4.2 Aplikasi Proyek Kelompok

Pada bagian analisa telah dijelaskan mengenai aplikasi MemoPad yang

menjadi aplikasi proyek kelompok. Pada bagian ini berisi pengujian apilkasi

Memopad yang telah dijelaskan.

Gambar 6.15 Tampilan utama aplikasi MemoPad

Gambar 6.15 menujukkan tampilan utama aplikasi MemoPad. Pada

tampilan utama berisi daftar catatan yang telah dibuat dengan menampilkan

masing-masing judul dan tanggal pembuatannya atau tanggal terakhir

Page 36: BAB VI MODUL IV

pengubahannya. Di bawah tampilan daftar catatan terdapat tombol Add untuk

membuat catatan baru.

Gambar 6.16 Tampilan pembuatan dan pengubahan catatan

Pada gambar 6.16 menujukkan tampilan pembuatan dan pengubahan

catatan. Terdapat du menu utama, yaitu SAVE untuk menyimpan catatan dan

DELETE untuk penghapusan catatan.

Gambar 6.17 perubahan daftar catatan setelah catatan disimpan

Pada gambar 6.17 menunjukkan perubahan daftar catatan setelah catatan

baru disimpan.

Page 37: BAB VI MODUL IV

6.5 Simpulan

Kesimpulan yang dapat diambil dari pembahasan Bab VI ini antara lain

adalah sebagai berikut :

1. Spinner atau bisa juga disebut combobox (dalam sebagian bahasa

pemograman). Digunakan sebagai selected pemilihan cepat dengan item

yang jumlahnnya banyak.

2. Checkbox digunakan pada form yang bersifat check. Bisa di pilih atau bisa

juga tidak dan bersifat multiselect.

3. Radio button widget yang digunakan pada form yang bersifat selected one

atau hanya dipilih salah satu dari beberapa radio button.

4. RadioButtons dan CheckButtons cocok digunakan dalam pilihan suatu set

yang kecil jika pilihan sangat banyak maka dapat menggunakan spinner.