• Tidak ada hasil yang ditemukan

Index of /Kuliah2016-2017/Struktur & Pemakaian Teknologi Game

N/A
N/A
Protected

Academic year: 2017

Membagikan "Index of /Kuliah2016-2017/Struktur & Pemakaian Teknologi Game"

Copied!
32
0
0

Teks penuh

(1)

BAB 7

(2)

134

7.1

Tujuan Pembelajaran

1.

Memahami macam penyimpanan data pada Android

2.

Memahami cara menulis dan membaca file dari penyimpanan internal dan eksternal

3.

Memahami penggunaan database SQLite

7.2

Dasar Teori

Android menyediakan 4 mekanisme dalam menyimpan dan mendapatkan kembali

data, yaitu :

1.

Preferences,

2.

Files,

3.

Database, and

4.

Network.

Dalam Android, semua data aplikasi ( termasuk file) private terhadap aplikasi itu

sendiri. Android juga menyediakan cara untuk sebuah aplikasi untuk menampilkan data

privatenya ke aplikasi lain menggunakan content Providers. Android menyiapkan

beberapa content providers untuk tipe data standar, seperti image, audio, video files dan

personal contact information.

7.2.1

Preferences

Preferences adalah mekanisme yang mudah dalam android untuk menyimpan

dan mendapatkan kembali pasangan key-value dari tipe data primitive(disebut juga

dengan Maps dan Associative Arrays)

Biasanya digunakan untuk menyimpan state informasi dan data bersama

diantara beberapa activity dalam aplikasi. Dalam setiap entry <key-value> key

adalah string dan value harus berupa tipe data primitive. Preferences hampir sama

dengan Bundles, namun preferences bersifat persisten sedangkan bundles tidak.

(3)

135

getPreferences() from within your Activity, to access activity specific

preferences

getSharedPreferences() from within your Activity (or other application

Context), to access application-level preferences

getDefaultSharedPreferences(), on PreferencesManager, to get the shared

preferences that work in concert with Android’s overall preference framework

Penggunaan Preference

Semua fungsi

get… yang ada pada Preference akan mengembalikan sebuah

object dimana isi dari object tersebut dapat dimanipulasi oleh suatu

editor melalui

perintah

putXXX…

dan

getXXX untuk meletakkan atau mengambil data container

[image:3.595.170.478.391.532.2]

Preference.

Gambar 50 Penggunaan Preference

7.2.2 Files

Android menggunakan konstruksi file yang sama dengan apa yang ada pada

aplikasi Java. File dapat disimpan pada memori utama perangkat (internal storage)

atau pada memori yang lebih besar seperti SD Card (external storage). File juga

(4)

136

File disimpan dalam media penyimpanan perangkat bersama-sama dengan

sumber daya aplikasi lain (seperti ikon, gambar, music, dll) yang dinamakan

resource files.

7.2.3

Databases

Pengenalan

Android menggunakan program tertanam standalone yang dinamakan

sqlite3, yang dapat digunakan untuk :

create a database,

define SQL tables,

indices,

queries,

views,

triggers

Insert rows,

delete rows,

change rows,

run queries dan

administer a SQLite database file.

Menggunakan SQLite

1.

SQLite mengimplementasikan standar SQL-92.

2.

Memiliki dukungan trigger dan dapat melakukan query yang cukup

kompleks

3.

Tidak mendukung referential integrity constraints.

Bagaimana membuat database SQLite

(5)

137

public static SQLiteDatabase.openDatabase ( String path, SQLiteDatabase.CursorFactory factory, int flags )

Parameters

path : to database file to open and/or create

factory : an optional factory class that is called to instantiate a cursor when query is

called, or null for default

flags : to control database access mode

Returns : the newly opened database

Throws : SQLiteException if the database cannot be opened

Open

the

database

according

to

the

flags

OPEN_READWRITE,

OPEN_READONLY, CREATE_IF_NECESSARY. Sets the locale of the database

to the the system's current locale.

Cara kedua :

SQLiteDatabase db = this.openOrCreateDatabase("myfriendsDB", MODE_PRIVATE, null);

where the assumed prefix for the database stored in the devices ram is:

"/data/data/<CURRENT_namespace>/databases/". For instance if this app is created

in a namespace called “cis493.sql1”, the full name of the newly created database

(6)

162

Workshop 11

Databases

A.

Tujuan

1.

Memahami pengertian SQL Database

2.

Memahami penggunaan SQL Database

B.

Tugas Pendahuluan

1.

Pelajari cara pembuatan database di Android

C.

Percobaan

a.

Percobaan 1 : Membuat table dan insert field pada Android

Langkah 1: Buat project Android baru pada Eclipse

Langkah 2: Tambahkan statement berikut pada main.xml

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

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

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/txtFinish"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello" />

(7)

163

android:id="@+id/txtMulai"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/txtFinish" android:layout_below="@+id/txtFinish" android:layout_marginTop="48dp" android:text="@string/hello" />

</RelativeLayout>

Langkah 3 : Lengkapi statement berikut pada class java MainActivity

package com.data;

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

public static final String KEY_ROWID = "_id";

public static final String KEY_ISEBN = "isbn";

public static final String KEY_TITLE = "title";

public static final String KEY_PUBLISHER ="publisher";

public static final String TAG = "DBAdapter";

private static final String DATABASE_NAME ="books";

private static final String DATABASE_TABLE ="titles";

private static final int DATABASE_VERSION = 1;

private static final String DATABASE_CREATE =

" create table titles (_id integer primary key autoincrement, "+ "isbn text not null, title text not null,"

+ "publisher text not null);";

private final Context context;

private DatabaseHelper DBHelper;

private SQLiteDatabase db;

(8)

164

this.context = ctx;

DBHelper = new DatabaseHelper(context);

}

private static class DatabaseHelper extends SQLiteOpenHelper {

DatabaseHelper(Context context){

super(context, DATABASE_NAME, null , DATABASE_VERSION);

}

public void onCreate(SQLiteDatabase db){

db.execSQL(DATABASE_CREATE);

}

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 exist titles");

onCreate(db);

}

}

public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return this;

}

public void close() {

DBHelper.close(); }

public long insertTitle(String isbn, String title, String publisher){

ContentValues initialValues = new ContentValues(); initialValues.put(KEY_ISEBN, isbn);

initialValues.put(KEY_TITLE, title);

initialValues.put(KEY_PUBLISHER, publisher);

return db.insert(DATABASE_TABLE, null, initialValues); }

(9)

165

public boolean delete(long rowid){

return db.delete(DATABASE_TABLE, KEY_ROWID + "=" +rowid,

null) >0; }

public Cursor getAllTitles(){

return db.query(DATABASE_TABLE, new String[]{

KEY_ROWID,

KEY_ISEBN,

KEY_TITLE,

KEY_PUBLISHER},

null, null,null, null, null);

}

public Cursor getTitle(long rowId) throws SQLException{

Cursor mCursor =

db.query(true, DATABASE_TABLE, new String[]{

KEY_ROWID,

KEY_ISEBN,

KEY_TITLE,

KEY_PUBLISHER},

KEY_ROWID + "="+ rowId, null, null,null, null, null);

if (mCursor != null){

mCursor.moveToFirst();

}return mCursor; }

public boolean updateTitle(long rowId, String isbn, String title, String publisher){

ContentValues args = new ContentValues(); args.put(KEY_ISEBN, isbn);

args.put(KEY_TITLE, title);

args.put(KEY_PUBLISHER, publisher);

return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null)>0;

(10)

166

Langkah 4 : Lakukan editing pada kode yang dicetak tebal berikut pada class

AndroidManifest.xml:

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.data"

android:versionCode="1" android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<application

android:icon="@drawable/ic_launcher" android:label="@string/app_name" >

<activity

android:name=".DatabaseBukuActivity" android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category

android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application> </manifest>

Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android

(11)
(12)

168

b.

Percobaan 2 : Membuat database dengan SQLHelper

Langkah 1: Buat project Android baru pada Eclipse

Langkah 2: Tambahkan statement berikut pada main.xml

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

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

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<LinearLayout

android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" >

<TextView

android:id="@+id/TextView01"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="number " >

</TextView>

<EditText

android:id="@+id/editText_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:phoneNumber="true" >

</EditText>

</LinearLayout>

<LinearLayout

android:id="@+id/LinearLayout03" android:layout_width="wrap_content" android:layout_height="wrap_content" >

<TextView

android:id="@+id/TextView02"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="name " >

(13)

169

<EditText

android:id="@+id/editText_name" android:layout_width="wrap_content" android:layout_height="wrap_content" >

</EditText>

</LinearLayout>

<LinearLayout

android:id="@+id/LinearLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" >

<Button

android:id="@+id/but_in"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_inClick"

android:text="Add" >

</Button>

<Button

android:id="@+id/but_Edit"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_EditClick" android:text="Edit" >

</Button>

<Button

android:id="@+id/but_delete"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_DelClick" android:text="Delete" >

</Button>

</LinearLayout>

<TextView

android:id="@+id/TextView03"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="DATA" >

</TextView>

(14)

170

android:id="@+id/ListView01"

android:layout_width="wrap_content" android:layout_height="wrap_content" >

</ListView> </LinearLayout>

Langkah 3 : Buatlah sebuah class xml lagi, beri nama view2.xml

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

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

android:id="@+id/TableLayout01"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<TextView

android:id="@+id/name"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="myName" >

</TextView>

<TextView

android:id="@+id/number"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="myNumber" >

</TextView>

</TableLayout>

Langkah 4 : Lengkapi statement berikut pada class java MainActivity

import android.app.Activity;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.EditText;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.SimpleCursorAdapter;

(15)

171

public class usingSQLHelper extends Activity { mySqlHelper dbHelper;

private EditText ed_num;

private EditText ed_name; protected Cursor cursor;

private int id=-1;

protected ListAdapter adapter; protected ListView numberList;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

this.ed_num = (EditText)

this.findViewById(R.id.editText_num);

this.ed_name = (EditText)

this.findViewById(R.id.editText_name);

this.numberList = (ListView)

this.findViewById(R.id.ListView01); dbHelper = new mySqlHelper(this); numberList.setSelected(true);

numberList.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

SQLiteDatabase db =

dbHelper.getReadableDatabase();

cursor = db.rawQuery("SELECT * FROM data",null);

cursor.moveToPosition(arg2);

ed_num.setText(cursor.getString(1)); ed_name.setText(cursor.getString(2)); id=cursor.getInt(0);

}});

view(); }

private void addData(String num,String name) {

SQLiteDatabase db = dbHelper.getWritableDatabase(); try{

db.execSQL("insert into "+ mySqlHelper.TABLE +" values(null,'"+num+"','"+name+"')");

}

(16)

172

ed_num.setText(e.toString());

} }

public void but_inClick(View v) {

addData(ed_num.getText().toString(),ed_name.getText().toString()); view();

}

public void but_DelClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase(); try{

if(id!=-1)

{

db.execSQL("delete from "+ mySqlHelper.TABLE +" where number='" +ed_num.getText().toString()+ "'");

view();

}

}

catch(Exception e) {

ed_num.setText(e.toString()); }

}

public void but_EditClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase(); try{

if(id!=-1)

{

db.execSQL("update data set

number='"+ed_num.getText().toString()+"',name='"+ed_name.getText().to String()+"' where _id="+id);

view();

}

}

catch(Exception e) {

ed_num.setText(e.toString()); }

}

private void view() {

(17)

173

try{

cursor = db.rawQuery("SELECT * FROM data",null); adapter = new SimpleCursorAdapter(

this,

R.layout.view2,

cursor,

new String[] {"number","name"}, new int[] {R.id.number,R.id.name});

numberList.setAdapter(adapter);} catch(Exception e)

{

ed_num.setText(e.toString()); }

}

}

Langkah 5 : Kemudian, buatlah sebuah class java baru, beri nama

mySqlHelper.java

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

public class mySqlHelper extends SQLiteOpenHelper{

private static final String DATABASE_NAME = "mydatabase.db";

private static final int DATABASE_VERSION = 1;

// Table name

public static final String TABLE = "data"; // Columns

public static final String number = "number";

public static final String name = "name";

public mySqlHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto-generated constructor stub

}

@Override

public void onCreate(SQLiteDatabase db) {

(18)

174

+ " integer primary key autoincrement, " + number + " text not null, "

+ name + " text not null);"; Log.d("Data", "onCreate: " + sql); db.execSQL(sql);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int

newVersion) {

// TODO Auto-generated method stub }

}

Lakukan editing pada kode yang dicetak tebal berikut pada class

AndroidManifest.xml:

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.data"

android:versionCode="1" android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<application

android:icon="@drawable/ic_launcher" android:label="@string/app_name" >

<activity

android:name=".DatabaseBukuActivity" android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category

android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application> </manifest>

Langkah 6 :Tekan F11 untuk mendebug aplikasi pada emulator Android

(19)

175

c.

Percobaan 3 : Membuat database dengan ContentService

Langkah 1: Buat project Android baru pada Eclipse

Langkah 2: Tambahkan statement berikut pada main.xml

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

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

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<LinearLayout

android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" >

<TextView

android:id="@+id/TextView01"

(20)

176

android:text="number " >

</TextView>

<EditText

android:id="@+id/editText_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:phoneNumber="true" >

</EditText>

</LinearLayout>

<LinearLayout

android:id="@+id/LinearLayout03" android:layout_width="wrap_content" android:layout_height="wrap_content" >

<TextView

android:id="@+id/TextView02"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="name " >

</TextView>

<EditText

android:id="@+id/editText_name" android:layout_width="wrap_content" android:layout_height="wrap_content" >

</EditText>

</LinearLayout>

<LinearLayout

android:id="@+id/LinearLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" >

<Button

android:id="@+id/but_in"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_inClick"

android:text="Add" >

</Button>

<Button

(21)

177

android:layout_width="wrap_content"

android:layout_height="wrap_content" android:onClick="but_EditClick" android:text="Edit" >

</Button>

<Button

android:id="@+id/but_delete"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_DelClick" android:text="Delete" >

</Button>

</LinearLayout>

<TextView

android:id="@+id/TextView03"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="DATA" >

</TextView>

<ListView

android:id="@+id/ListView01"

android:layout_width="wrap_content" android:layout_height="wrap_content" >

</ListView> </LinearLayout>

Langkah 3 : Buatlah sebuah class xml lagi, beri nama view2.xml

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

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

android:id="@+id/TableLayout01"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<TextView

android:id="@+id/name"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="myName" >

(22)

178

<TextView

android:id="@+id/number"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="myNumber" >

</TextView>

</TableLayout>

Langkah 4 : Lengkapi statement berikut pada class java MainActivity

import android.app.Activity;

import android.content.ContentValues;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.EditText;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.SimpleCursorAdapter;

import android.widget.AdapterView.OnItemClickListener;

public class usingContentValues extends Activity { mySqlHelper dbHelper;

private EditText ed_num;

private EditText ed_name;

private int id=-1;

protected Cursor cursor; protected ListAdapter adapter; protected ListView numberList;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

this.ed_num = (EditText)

this.findViewById(R.id.editText_num);

this.ed_name = (EditText)

this.findViewById(R.id.editText_name);

this.numberList = (ListView)

this.findViewById(R.id.ListView01); numberList.setSelected(true);

(23)

179

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

SQLiteDatabase db =

dbHelper.getReadableDatabase();

cursor = db.rawQuery("SELECT * FROM data",null);

cursor.moveToPosition(arg2);

ed_num.setText(cursor.getString(1)); ed_name.setText(cursor.getString(2)); id=cursor.getInt(0);

}});

dbHelper = new mySqlHelper(this); view();

}

private long addData(String num,String name) {

SQLiteDatabase db = dbHelper.getWritableDatabase(); try{

ContentValues newValues = new ContentValues(); newValues.put("number", num);

newValues.put("name", name);

db.insert(dbHelper.TABLE, null, newValues); }

catch(Exception e) {

ed_num.setText(e.toString()); }

return 0; }

public void but_inClick(View v) {

addData(ed_num.getText().toString(),ed_name.getText().toString()); view();

}

public void but_DelClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase(); try{

if(id!=-1)

{

db.delete(dbHelper.TABLE, "_id="+id, null);

view();

(24)

180

}

catch(Exception e) {

ed_num.setText(e.toString()); }

}

public void but_EditClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase(); try{

if(id!=-1)

{

ContentValues updateVal = new ContentValues(); updateVal.put("number",

ed_num.getText().toString());

updateVal.put("name",

ed_name.getText().toString());

db.update("data", updateVal, "_id="+id,null);

view();

}

}

catch(Exception e) {

ed_num.setText(e.toString()); }

}

private void view() {

SQLiteDatabase db = dbHelper.getReadableDatabase(); try{

cursor = db.rawQuery("SELECT * FROM data",null); adapter = new SimpleCursorAdapter(

this,

R.layout.view2,

cursor,

new String[] {"number","name"}, new int[] {R.id.number,R.id.name}); numberList.setAdapter(adapter);}

catch(Exception e) {

ed_num.setText(e.toString()); }

(25)

181

Langkah 5 : Kemudian, buatlah sebuah class java baru, beri nama

mySqlHelper.java

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

public class mySqlHelper extends SQLiteOpenHelper{

private static final String DATABASE_NAME = "mydatabase.db";

private static final int DATABASE_VERSION = 1; // Table name

public static final String TABLE = "data"; // Columns

public static final String number = "number";

public static final String name = "name";

public mySqlHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto-generated constructor stub

}

@Override

public void onCreate(SQLiteDatabase db) {

String sql = "create table " + TABLE + "( _id"

+ " integer primary key autoincrement, " + number + " text not null, "

+ name + " text not null);"; Log.d("Data", "onCreate: " + sql); db.execSQL(sql);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int

newVersion) {

// TODO Auto-generated method stub }

}

Langkah 6 :lakukan editing pada AndroidManifest.xml

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.stef.usingContentValues"

(26)

182

<application android:icon="@drawable/icon"

android:label="@string/app_name">

<activity android:name=".usingContentValues" android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category

android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

<uses-sdk android:minSdkVersion="7" />

</manifest>

Tekan F11 untuk mendebug aplikasi pada emulator Android

Langkah 7 : Maka akan muncul outputnya

d.

Percobaan 4 : Membuat database dengan Book

Langkah 1: Buat project Android baru pada Eclipse

(27)

183

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

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

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/mytext"

android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />

<LinearLayout

android:id="@+id/LinearLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" >

<EditText

android:id="@+id/Ed_search"

android:layout_width="wrap_content" android:layout_height="wrap_content" >

</EditText>

<Button

android:id="@+id/But_Search"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="but_SearchClick" android:text="SEARCH" >

</Button>

</LinearLayout>

<TextView

android:id="@+id/text_Jumlah" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Jumlah :" >

</TextView>

<ListView

android:id="@+id/ListView01"

android:layout_width="wrap_content" android:layout_height="wrap_content" >

(28)

184

</LinearLayout>

Langkah 3 : Lengkapi statement berikut pada class java MainActivity

import android.app.Activity;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.view.View;

import android.widget.EditText;

import android.widget.Button;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.SimpleCursorAdapter;

import android.widget.TextView;

public class Book extends Activity { mySqlHelper dbHelper;

private TextView Jumlah;

private EditText ed_Search;

private TextView mytext;

private Button but_Search; protected Cursor cursor; protected ListAdapter adapter; protected ListView List;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main); dbHelper = new mySqlHelper(this);

mytext=(TextView) findViewById(R.id.mytext); but_Search=(Button) findViewById(R.id.But_Search); ed_Search=(EditText) findViewById(R.id.Ed_search); List=(ListView) findViewById(R.id.ListView01); Jumlah=(TextView) findViewById(R.id.text_Jumlah);

}

public void but_SearchClick(View v) {

try{

SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT _id,title,type FROM book where title LIKE '%"

(29)

185

,null);

adapter = new SimpleCursorAdapter(

this,

android.R.layout.simple_list_item_2,

cursor,

new String[] {"title","type"},

new int[]

{android.R.id.text1,android.R.id.text2}); List.setAdapter(adapter);

cursor = db.rawQuery("select count(type) from book where title LIKE '%"

+ed_Search.getText().toString()+"%'",null); cursor.moveToFirst();

Jumlah.setText("Jumlah : "+cursor.getInt(0));

}

catch(Exception e) {

mytext.setText(e.toString()); }

} }

Langkah 4 : Buatlah sebuah activity lagi, beri nama MySqlHelper.java

package com.stef.Book;

import android.content.ContentValues;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

public class mySqlHelper extends SQLiteOpenHelper{

private static final String DATABASE_NAME = "database.db";

private static final int DATABASE_VERSION = 1;

// Table name

public static final String TABLE = "book"; // Columns

public static final String title = "title";

public static final String type = "type";

(30)

186

super(context, DATABASE_NAME, null, DATABASE_VERSION);

// TODO Auto-generated constructor stub }

@Override

public void onCreate(SQLiteDatabase db) {

String sql = "create table " + TABLE + "( _id"

+ " integer primary key autoincrement, " + title + " text not null, "

+ type + " text not null);"; Log.d("Data", "onCreate: " + sql); db.execSQL(sql);

ContentValues newValues = new ContentValues(); newValues.put("title", "Mengenal android"); newValues.put("type", "technology");

db.insert(TABLE, null, newValues);

newValues = new ContentValues();

newValues.put("title", "Memasak dengan mudah"); newValues.put("type", "hoby");

db.insert(TABLE, null, newValues);

newValues = new ContentValues();

newValues.put("title", "cerita anak sma"); newValues.put("type", "fiction");

db.insert(TABLE, null, newValues);

newValues = new ContentValues();

newValues.put("title", "Memancing di danau"); newValues.put("type", "hoby");

db.insert(TABLE, null, newValues);

newValues = new ContentValues();

newValues.put("title", "cinta membawa hati"); newValues.put("type", "fiction");

db.insert(TABLE, null, newValues);

newValues = new ContentValues();

newValues.put("title", "belajar menari dengan kaset"); newValues.put("type", "hoby");

db.insert(TABLE, null, newValues); }

(31)

187

public void onUpgrade(SQLiteDatabase db, int oldVersion, int

newVersion) {

// TODO Auto-generated method stub

db.execSQL("DROP TABLE IF EXISTS " + TABLE); // Create a new one.

onCreate(db); }

}

Lakukan editing pada kode yang dicetak tebal berikut pada class

AndroidManifest.xml:

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

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

package="com.stef.Book" android:versionCode="1" android:versionName="1.0">

<application android:icon="@drawable/icon"

android:label="@string/app_name">

<activity android:name=".Book"

android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN"

/>

<category

android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

<uses-sdk android:minSdkVersion="7" />

</manifest>

Langkah 5 : Tekan F11 untuk mendebug aplikasi pada emulator Android

(32)

Gambar

Gambar 50 Penggunaan Preference

Referensi

Dokumen terkait

Skripsi berjudul Aplikasi IHACRES Untuk Pemodelan Hujan Aliran (Studi Kasus: Das Blega, Das Pangilen, Das Proppo, Dan Das Ambunten) telah diuji dan disahkan

: Seketariat Panitia (Kantor Dinas Dikmudora Kab. Kolaka) Data kualifikasiyang dibawa adalah Dokumen ASII besefia salinannya yang terdiri atas :8. Akta Pendirian

Kelas mutu reject memiliki nilai variasi perimeter terbesar, hal ini dapat dilihat dari nilai maksimum yang hampir sama dengan nilai maksimum kelas super sedangkan nilai minimum

DBPARTEMEN PENDIDIKAN NASIOT.{AL TJNIVERSITAS NEGERI YOGYAKARTA LEMBAGA PENGABDIAN KEPADA MASYAIT{KAT.. Alamatl Kampus lfurangmnkng, Yogyakafte

CV. URIP WESI CV. Kolaka) Data kualifikasi yang dibawa adalah Dokumen ASII beserta salinannya yang terdiri atas :4. Akta Pendirian Perusahaan dan Perubahannya,

untuk penyampaian materi teori, simutasi denganirr&#34;n!g;;ui;n peralatan mulrirnedia, demonshasi langsung menggunakan alat praritek, t&#34;ri.-jr*ru, problem sorving,

menyatakan dengan sesungguhnya bahwa karya ilmiah yang berjudul ” Aplikasi Karbofuran dan Benomil Untuk Pengendalian Hama dan Penyakit Pada Tanaman Sansevieria

menyatakan dengan sesungguhnya bahwa karya ilmiah yang berjudul “ Aplikasi Kombinasi Agens Hayati Cendawan Paecilomyces Fumosoroseus Dan Nematoda Patogen Serangga