BELAJAR INPUT PADA DATABASE SQLite DENGAN ANDROID
Di
bawah ini kita akan membuat sebuah aplikasi android sederhana dengan
menggunakan eclips ide, adapun aplikasi yang akan kita buata adalah aplikasi
input data karyawan.
Baiklah kita akan memulai proses pembuatan aplikasi android
sederhana kita , adapun langkah langkah yang di lakukan adalah sebagai beriku :
1.
Buatlah sebuah projek android baru dengan cara :
File ènewèandroid application
project
2.
Kemudian isikan form yang muncul dengan isisan
sebagai berikut :
Kemudian klik pilihan next.
3.
Kemudian aka nada pilihan form di bawah ini :
Kemudian pilih next.
4.
Dan kemudian juga aka nada form di bawah ini
setelah kita pelih next tadi :
Dan kita pilih next lagi.
5.
Setelah itu kita akan menemui form tampilan
seperti di bawah ini :
Maka pilihlah blank activity dan pilih next
lagi :
6.
Setelah itu kita isikan activity name dan layout
name seperti di bawah ini :
Setelah itu klik pilihan finish.
7. Kita
buka file Activity_main.xml dan rubahlah scritp nya seperti di bawan ini :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
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" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
8. Kemudian
buka file MainActivity.java dan ubah scriptnya seperti di bawan ini :
package
com.karyawan.datakaryawan;
import
android.os.Bundle;
import
android.app.Activity;
import
android.view.Menu;
public
class MainActivity extends Activity {
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu
menu) {
// Inflate the menu; this adds
items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main,
menu);
return true;
}
}
9.
Kemudian kita harus membuat beberapa file xml
lagi, pertama buatlah file xml dengan nama inputdata.xml. dan langkah nya
seperti di bawah ini :
resèklik
kanan pada layoutènewèkemudian klik android
xml fileèkemudian
isikan nama filenya.
Kemudian kita ubah script dari inputdata.xml
nya sebagai berikut :
<?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:id="@+id/txt_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20px"
android:text="title"
/>
<EditText
android:id="@+id/data_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Nama"/>
<EditText
android:id="@+id/data_jabatan"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="jabatan"/>
<EditText
android:id="@+id/data_alamat"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="alamat"/>
<EditText
android:id="@+id/data_nohp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number"
android:hint="nohp">
<requestFocus />
</EditText>
<Button
android:id="@+id/submit_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="submit" />
<Button
android:id="@+id/cancel_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="cancel" />
</LinearLayout>
10. Kemudian
buat lagi file xml lagi dengan nama listitem.xml dan ubah scriptnya seperti di
bawah ini :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5px"
>
<CheckedTextView
android:id="@+id/text_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="Name
karyawan"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
/>
<TextView
android:id="@+id/text_id"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:visibility="gone"
/>
</LinearLayout>
11. Kemudian buat lagi file xml dengan nama listview.xml
dan ubah script nya seperti berikut :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:id="@+id/add_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="tambah"
/>
<Button
android:id="@+id/update_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="edit"
/>
<Button
android:id="@+id/delete_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="hapus"
/>
<TextView
android:id="@+id/list_empty"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:text="no data"
/>
<ListView
android:id="@+id/list_data"
android:layout_width="fill_parent"
android:layout_height="290dp"
>
</ListView>
<Button
android:id="@+id/exit_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="EXIT"
/>
</LinearLayout>
12. Kemudian
kita buat file.jafa nya dan ada beberapa file java yang harus kita buat, cara
membuat file.java adalah sebagai berikut :
Srcèklik
kana pada com.karyawan.datakaryawanènewèpilih
classèkemudian
isikan nama file nya.
Yang pertama kita membuta file dengan nama karyawan.java dan
kemudian ubah scriptnya sebagai berikut :
package
com.karyawan.datakaryawan;
public class karyawan {
long id;
String
name;
String
jabatan;
String
alamat;
String
nohp;
boolean complete;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getjabatan()
{
return jabatan;
}
public void setjabatan(String
jabatan) {
this.jabatan = jabatan;
}
public String getalamat() {
return alamat;
}
public void setalamat(String
alamat) {
this.alamat = alamat;
}
public String getnohp(){
return nohp;
}
public void setnohp(String
nohp){
this.nohp = nohp;
}
public boolean isComplete() {
return complete;
}
public void setComplete(boolean complete) {
this.complete = complete;
}
//
-------------------------------------------
public void toggleComplete() {
complete = !complete;
}
}
13. Kemudian kita buat file.java lagi
dengan nama karyawanAdapter.java dan kemudian ubah scriptnya seperti di bawah
ini :
package
com.karyawan.datakaryawan;
import
java.util.ArrayList;
import
android.annotation.SuppressLint;
import
android.content.Context;
import
android.view.LayoutInflater;
import
android.view.View;
import
android.view.ViewGroup;
import
android.widget.BaseAdapter;
import
android.widget.CheckedTextView;
import
android.widget.TextView;
public
class karyawanAdapter extends BaseAdapter {
ArrayList<karyawan> cust;
Context context;
public karyawanAdapter(Context context,
ArrayList<karyawan> custs) {
super();
this.cust = custs;
this.context = context;
}
@Override
public int getCount() {
return cust.size();
}
@Override
public karyawan getItem(int position) {
return (null == cust) ? null :
cust.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public static class ViewHolder {
public CheckedTextView nameView;
public TextView idView;
}
@SuppressLint("InflateParams")
@Override
public View getView(int position, View
convertView, ViewGroup parent) {
ViewHolder holder;
View vi = convertView;
if (null == convertView) {
LayoutInflater infalInflater =
(LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vi =
infalInflater.inflate(R.layout.listitem, null);
holder = new ViewHolder();
holder.nameView =
(CheckedTextView) vi.findViewById(R.id.text_name);
holder.idView =
(TextView) vi.findViewById(R.id.text_id);
vi.setTag(holder);
}
else
holder = (ViewHolder)
vi.getTag();
String txtName =
cust.get(position).getName()+" ||
"+cust.get(position).getjabatan()+" ||
"+cust.get(position).getalamat()+" || "+cust.get(position).getnohp();
String txtId =
String.valueOf(cust.get(position).getId());
boolean check = cust.get(position).isComplete();
holder.nameView.setText(txtName);
holder.nameView.setChecked(check);
holder.idView.setText(txtId);
return vi;
}
public void forceReload() {
notifyDataSetChanged();
}
public void
toggleDataCompleteAtPosition(int position) {
karyawan cust = getItem(position);
cust.toggleComplete();
notifyDataSetChanged();
}
public Long[] removeCheckedBarang() {
ArrayList<karyawan>
completedTasks = new ArrayList<karyawan>();
ArrayList<Long> completedIds
= new ArrayList<Long>();
for (karyawan dtCust : cust) {
if (dtCust.isComplete()) {
completedTasks.add(dtCust);
completedIds.add(dtCust.getId());
}
}
cust.removeAll(completedTasks);
notifyDataSetChanged();
return completedIds.toArray(new
Long[]{});
}
public karyawan getCheckedBarang() {
karyawan newCust = new karyawan();
for (karyawan dtCust : cust) {
if (dtCust.isComplete()) {
newCust = dtCust;
break;
}
}
return newCust;
}
}
14. Kemudian kita buat lagi file.java
nya dengan nama karyawanApps.java dan ubah scriptnya sebagai berikut :
package
com.karyawan.datakaryawan;
import
java.util.ArrayList;
import
android.annotation.SuppressLint;
import
android.app.Activity;
import
android.content.Intent;
import
android.database.sqlite.SQLiteDatabase;
import
android.os.Bundle;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.AdapterView;
import
android.widget.Button;
import
android.widget.EditText;
import
android.widget.ListView;
import
android.widget.TextView;
import
android.widget.Toast;
import
android.widget.AdapterView.OnItemClickListener;
import
android.widget.AdapterView.OnItemLongClickListener;
public
class karyawanApps extends Activity {
ArrayList<karyawan> currentData;
SQLiteDatabase database;
karyawanAdapter adapter;
ListView list;
karyawanSQLHelper helper;
karyawan cust;
Button btnSubmit, btnCancel;
TextView txtTitle;
EditText dtName, dtMerk, dtHarga;
Utils util;
private EditText dtname;
private TextView dtjabatan;
private EditText dtalamat;
private EditText dtnohp;
/** Called when the activity is first
created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
util = new Utils(this);
list = (ListView)
findViewById(R.id.list_data);
karyawanSQLHelper helper = new
karyawanSQLHelper(this);
database = helper.getWritableDatabase();
currentData = new
ArrayList<karyawan>();
//
---- load data ----
currentData = util.loadData();
adapter = new
karyawanAdapter(this, currentData);
list.setAdapter(adapter);
list.setEmptyView(findViewById(R.id.list_empty));
list.setOnItemClickListener(new
OnItemClickListener() {
public void
onItemClick(AdapterView<?> parent, View v,
int position,
long id) {
adapter.toggleDataCompleteAtPosition(position);
}
});
list.setOnItemLongClickListener(new
OnItemLongClickListener() {
public boolean
onItemLongClick(AdapterView<?> parent, View v,
int position,
long id) {
karyawan c =
adapter.getItem(position);
util.onShowData(c,karyawanApps.this);
return false;
}
});
// set button click
onButtonClick();
}
//
----------------------------------------------
@Override
protected void onResume() {
super.onResume();
adapter.forceReload();
}
//
-----------------------------------------------
public void onButtonClick() {
Button
btnAdd = (Button) findViewById(R.id.add_button);
btnAdd.setOnClickListener(new
OnClickListener() {
public
void onClick(View v) {
onCreateWidgetData(1, new karyawan()); }
});
Button
btnUpdate = (Button) findViewById(R.id.update_button);
btnUpdate.setOnClickListener(new
OnClickListener() {
public
void onClick(View v) {
karyawan
c = adapter.getCheckedBarang();
if
(!c.getName().equals(""))
onCreateWidgetData(2, c);
else
{
Toast.makeText(karyawanApps.this,
"Harus centang satu",
Toast.LENGTH_LONG).show();
}
}
});
Button
btnDelete = (Button) findViewById(R.id.delete_button);
btnDelete.setOnClickListener(new
OnClickListener() {
public
void onClick(View v) {
karyawan
c = adapter.getCheckedBarang();
onDeleteData(c.getId());
}
});
Button
btnExit = (Button) findViewById(R.id.exit_button);
btnExit.setOnClickListener(new
OnClickListener() {
public
void onClick(View v) {
finish();
android.os.Process.killProcess(android.os.Process.myPid());
}
});
}
public void onCreateWidgetData(int param,
final karyawan getCust) {
switch(param)
{
// add data new
case
1:
widgetAdd();
break;
// update existing data
case
2:
widgetUpdate(getCust);
break;
}
}
public void widgetAdd() {
setContentView(R.layout.inputdata);
txtTitle = (TextView)
findViewById(R.id.txt_title);
txtTitle.setText("ADD
DATA");
btnSubmit = (Button)
findViewById(R.id.submit_button);
btnSubmit.setOnClickListener(new
OnClickListener() {
private EditText dtname;
private
EditText dtjabatan;
private EditText dtalamat;
private EditText dtnohp;
public void onClick(View v)
{
dtName
= (EditText) findViewById(R.id.data_name);
dtjabatan
= (EditText) findViewById(R.id.data_jabatan);
dtalamat = (EditText)
findViewById(R.id.data_alamat);
dtnohp = (EditText)
findViewById(R.id.data_nohp);
if
(dtName.getText().length()<1
||
dtjabatan.getText().length()<1
||
dtalamat.getText().length()<1
||
dtnohp.getText().length()<1) {
Toast.makeText(karyawanApps.this,
"Check your input...",
Toast.LENGTH_SHORT).show();
}
else {
cust
= new karyawan();
cust.setName(dtName.getText().toString());
cust.setjabatan(dtjabatan.getText().toString());
cust.setalamat(dtalamat.getText().toString());
cust.setnohp(dtnohp.getText().toString());
cust.setComplete(false);
util.onSaveData(cust);
onCancel();
}
}
});
btnCancel = (Button)
findViewById(R.id.cancel_button);
btnCancel.setOnClickListener(new
OnClickListener() {
public
void onClick(View v) {
onCancel();
}
});
}
public void widgetUpdate(final karyawan
getCust) {
setContentView(R.layout.inputdata);
txtTitle
= (TextView) findViewById(R.id.txt_title);
txtTitle.setText("Update
Data");
dtName = (EditText)
findViewById(R.id.data_name);
dtName.setText(getCust.getName());
dtjabatan = (EditText)
findViewById(R.id.data_jabatan);
dtjabatan.setText(getCust.getjabatan());
dtalamat
= (EditText) findViewById(R.id.data_alamat);
dtalamat.setText(getCust.getalamat());
dtnohp = (EditText)
findViewById(R.id.data_nohp);
dtnohp.setText(getCust.getnohp());
btnSubmit = (Button)
findViewById(R.id.submit_button);
btnSubmit.setOnClickListener(new
OnClickListener() {
@SuppressLint("ShowToast")
public void onClick(View v) {
dtName
= (EditText) findViewById(R.id.data_name);
dtjabatan
= (EditText) findViewById(R.id.data_jabatan);
dtalamat
= (EditText) findViewById(R.id.data_alamat);
dtnohp = (EditText)
findViewById(R.id.data_nohp);
if
(dtName.getText().length()<1
||
dtjabatan.getText().length()<1
||
dtalamat.getText().length()<1
||
dtnohp.getText().length()<1) {
Toast.makeText(karyawanApps.this,
"Check your input...", Toast.LENGTH_SHORT);
}
else {
getCust.setName(dtName.getText().toString());
getCust.setjabatan(dtjabatan.getText().toString());
getCust.setalamat(dtalamat.getText().toString());
getCust.setnohp(dtnohp.getText().toString());
util.onUpdateData(getCust);
onCancel();
}
}
});
btnCancel = (Button)
findViewById(R.id.cancel_button);
btnCancel.setOnClickListener(new
OnClickListener() {
public
void onClick(View v) {
onCancel();
}
});
}
public void onDeleteData(long id) {
// Long[] ids =
adapter.removeCheckedCustomer();
//
deleteData(ids);
deleteData(new
Long[]{id});
currentData = util.loadData();
adapter = new
karyawanAdapter(this, currentData);
list.setAdapter(adapter);
}
@SuppressWarnings("static-access")
public void deleteData(Long[] ids) {
StringBuffer idList = new
StringBuffer();
for (int i =0; i< ids.length;
i++) {
idList.append(ids[i]);
if (i < ids.length -1 )
{
idList.append(",");
}
}
String where = String.format("%s in
(%s)", helper.TASK_ID, idList);
database.delete(helper.TASKS_TABLE,
where, null);
}
public void onCancel() {
Intent
newIntent = new Intent().setClass(karyawanApps.this,
karyawanApps.class);
startActivity(newIntent);
finish();
}
//
-----------------------------------------------
}
15. Kemudian buat file.javanya lagi
dengan nama karyawanSQLHelper.java dan ubah scriptnya sebagai berikut :
package
com.karyawan.datakaryawan;
import
android.content.Context;
import
android.database.sqlite.SQLiteDatabase;
import
android.database.sqlite.SQLiteOpenHelper;
public
class karyawanSQLHelper extends SQLiteOpenHelper {
public static final String DB_NAME =
"inventory_db.sqllite";
public static final int VERSION = 1;
public static final String TASKS_TABLE =
"inventory";
public static final String TASK_ID =
"id";
public static final String TASK_NAME =
"name";
public static final String TASK_JABATAN =
"jabatan";
public static final String TASK_ALAMAT =
"alamat";
public static final String TASK_NOHP = "nohp";
public static final String TASK_COMPLETE
= "complete";
public karyawanSQLHelper(Context context)
{
super(context, DB_NAME, null,
VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
createTable(db);
}
private void createTable(SQLiteDatabase
db) {
db.execSQL("create table
" + TASKS_TABLE + " ( " +
TASK_ID + " integer primary
key autoincrement not null, " +
TASK_NAME + " text, " +
TASK_JABATAN + " text, "
+
TASK_ALAMAT + " text, "
+
TASK_NOHP + " text, " +
TASK_COMPLETE + " text "
+
");"
);
}
@Override
public void onUpgrade(SQLiteDatabase db,
int oldVersion, int newVersion) {
}
}
16.
Kemudian bual lagi file.javanya dengan nama
Utils.java dan ubah scriptnya seperti di bawah ini :
package com.karyawan.datakaryawan;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class Utils {
karyawanSQLHelper
helper;
SQLiteDatabase
database;
public
Utils(Context ctx) {
helper
= new karyawanSQLHelper(ctx);
database
= helper.getWritableDatabase();
}
@SuppressWarnings("static-access")
public
ArrayList<karyawan> loadData() {
ArrayList<karyawan>
currentData = new ArrayList<karyawan>();
Cursor
dataCursor = database.query(helper.TASKS_TABLE,
new
String[] {helper.TASK_ID, helper.TASK_NAME,
helper.TASK_JABATAN,
helper.TASK_ALAMAT,
helper.TASK_NOHP,
helper.TASK_COMPLETE},
null,
null, null, null,
String.format("%s,
%s", helper.TASK_COMPLETE, helper.TASK_NAME));
dataCursor.moveToFirst();
karyawan
t;
if
( !dataCursor.isAfterLast() ) {
do
{
int
id = dataCursor.getInt(0); // coloum ID
String
name = dataCursor.getString(1); // coloum name
String
jabatan = dataCursor.getString(2); // coloum jabatan
String
alamat = dataCursor.getString(3); // coloum alamat
String
nohp = dataCursor.getString(4); // coloum nohp
String
boolValue = dataCursor.getString(5); // coloum complete
boolean
complete = Boolean.parseBoolean(boolValue);
t
= new karyawan();
t.setId(id);
t.setName(name);
t.setjabatan(jabatan);
t.setalamat(alamat);
t.setnohp(nohp);
t.setComplete(complete);
currentData.add(t);
}
while(dataCursor.moveToNext());
}
/*
while
(dataCursor.moveToNext()) {
}
*/
dataCursor.close();
return
currentData;
}
@SuppressWarnings("static-access")
public
void onSaveData(karyawan getCust) {
assert (null != getCust);
ContentValues values = new
ContentValues();
values.put(helper.TASK_NAME,
getCust.getName());
values.put(helper.TASK_JABATAN,
getCust.getjabatan());
values.put(helper.TASK_ALAMAT,
getCust.getalamat());
values.put(helper.TASK_NOHP,
getCust.getnohp());
values.put(helper.TASK_COMPLETE,
Boolean.toString(false));
getCust.setId(database.insert(helper.TASKS_TABLE,
null, values));
}
@SuppressLint("DefaultLocale")
@SuppressWarnings("static-access")
public
void onUpdateData(karyawan getCust) {
assert (null != getCust);
ContentValues values = new
ContentValues();
values.put(helper.TASK_NAME,
getCust.getName());
values.put(helper.TASK_JABATAN,
getCust.getjabatan());
values.put(helper.TASK_ALAMAT,
getCust.getalamat());
values.put(helper.TASK_NOHP,
getCust.getnohp());
values.put(helper.TASK_COMPLETE,
Boolean.toString(getCust.isComplete()));
long
id = getCust.getId();
String
where = String.format("%s = %d", helper.TASK_ID, id);
database.update(helper.TASKS_TABLE,
values, where, null);
}
AlertDialog alert;
public void onShowData(karyawan cust, Context ctx) {
final
karyawan thisCust = cust;
alert
= new AlertDialog.Builder(ctx).setIcon(R.drawable.icon)
.setTitle("Display Data")
.setMessage(" ------------
Customer -------------\n"
+ "ID:
"+thisCust.getId()+"\n"
+ "Name:
"+thisCust.getName()+"\n"
+ "Merk:
"+thisCust.getjabatan()+"\n"
+ "Merk:
"+thisCust.getalamat()+"\n"
+ "Harga:
"+thisCust.getnohp()+"\n")
.setNegativeButton("Close",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface
dialog, int whichButton) {
alert.cancel();
}
}).create();
alert.show();
}
}
17.
Kemudian kita buka file androidManifest.xml yang
terletak di resè androidManifest.xml.
dan kmudiah ubah scriptnya sepeti di bawah ini :
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.karyawan.datakaryawan"
android:versionCode="1"
android:versionName="1.0"
>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18"
/>
<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name">
<activity
android:name=".karyawanApps"
android:screenOrientation="sensor"
android:label="@string/app_name"
android:theme="@style/AppTheme"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name=".karyawan" >
</activity>
</application>
</manifest>