Assalamualaikum Wr. Wb
Kali ini saya akan membagikan cara untuk membuat SQLite Database.
1. Buka aplikasi ADT atau Android Studio.
2. Buat project baru
3. Buat file java dan xml seperti tampilan dibawah ini.
4. Source code untuk file customer.java
package com.example.sql;
public class Customer {
long id;
String name;
String address;
String phone;
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public boolean isComplete() {
return complete;
}
public void setComplete(boolean complete) {
this.complete = complete;
}
// ——————————————-
public void toggleComplete() {
complete = !complete;
}
}
5. Source code untuk custumerListAdapter.java
package com.example.sql;
import java.util.ArrayList;
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 CustomerListAdapter extends BaseAdapter {
ArrayList<Customer> cust;
Context context;
public CustomerListAdapter(Context context, ArrayList<Customer> custs) {
super();
this.cust = custs;
this.context = context;
}
@Override
public int getCount() {
return cust.size();
}
@Override
public Customer 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;
public TextView phoneView;
}
@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.txt_name);
holder.idView = (TextView) vi.findViewById(R.id.txt_id);
holder.phoneView=(TextView) vi.findViewById(R.id.data_phone);
vi.setTag(holder);
} else
holder = (ViewHolder) vi.getTag();
String txtName = cust.get(position).getName() + "-"
+ cust.get(position).getAddress() + "-"
+ cust.get(position).getPhone();
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) {
Customer cust = getItem(position);
cust.toggleComplete();
notifyDataSetChanged();
}
public Long[] removeCheckedCustomer() {
ArrayList<Customer> completedTasks = new ArrayList<Customer>();
ArrayList<Long> completedIds = new ArrayList<Long>();
for (Customer dtCust : cust) {
if (dtCust.isComplete()) {
completedTasks.add(dtCust);
completedIds.add(dtCust.getId());
}
}
cust.removeAll(completedTasks);
notifyDataSetChanged();
return completedIds.toArray(new Long[] {});
}
public Customer getCheckedCustomer() {
Customer newCust = new Customer();
for (Customer dtCust : cust) {
if (dtCust.isComplete()) {
newCust = dtCust;
break;
}
}
return newCust;
}
}
6. Source code untuk CustomerSQLHelper.java
package com.example.sql;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class CustomerSQLHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "customer_db.sqllite";
public static final int VERSION = 1;
public static final String TASKS_TABLE = "customer";
public static final String TASK_ID = "id";
public static final String TASK_NAME = "name";
public static final String TASK_ADDRESS = "address";
public static final String TASK_PHONE = "phone";
public static final String TASK_COMPLETE = "complete";
public CustomerSQLHelper(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_ADDRESS + " text, " + TASK_PHONE + " text, "
+ TASK_COMPLETE + " text " + ");");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
7. Source code untuk DatabaseApps.java
package com.example.sql;
import java.util.ArrayList;
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 DatabaseApps extends Activity {
ArrayList<Customer> currentData;
SQLiteDatabase database;
CustomerListAdapter adapter;
ListView list;
CustomerSQLHelper helper;
Customer cust;
Button btnSubmit, btnCancel;
TextView txtTitle;
EditText dtName, dtAddress, dtPhone;
Utils util;
/** 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);
CustomerSQLHelper helper = new CustomerSQLHelper(this);
database = helper.getWritableDatabase();
currentData = new ArrayList<Customer>();
// —- load data —-
currentData = util.loadData();
adapter = new CustomerListAdapter(this, currentData);
list.setAdapter(adapter);
list.setEmptyView(findViewById(R.id.list_empty));
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
adapter.toggleDataCompleteAtPosition(position);
}
});
list.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View v,
int position, long id) {
Customer c = adapter.getItem(position);
util.onShowData(c, DatabaseApps.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() {
@Override
public void onClick(View v) {
onCreateWidgetData(1, new Customer());
}
});
Button btnUpdate = (Button) findViewById(R.id.update_button);
btnUpdate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Customer c = adapter.getCheckedCustomer();
if (!c.getName().equals(""))
onCreateWidgetData(2, c);
else {
Toast.makeText(DatabaseApps.this, "Harus centang satu",
Toast.LENGTH_LONG).show();
}
}
});
Button btnDelete = (Button) findViewById(R.id.delete_button);
btnDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Customer c = adapter.getCheckedCustomer();
onDeleteData(c.getId());
}
});
Button btnExit = (Button) findViewById(R.id.exit_button);
btnExit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
android.os.Process.killProcess(android.os.Process.myPid());
}
});
}
public void onCreateWidgetData(int param, final Customer 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() {
// pengecekan
@Override
public void onClick(View v) {
dtName = (EditText) findViewById(R.id.data_name);
dtAddress = (EditText) findViewById(R.id.data_address);
dtPhone = (EditText) findViewById(R.id.data_phone);
if (dtName.getText().length() < 1
|| dtAddress.getText().length() < 1
|| dtPhone.getText().length() < 1) {
Toast.makeText(DatabaseApps.this, "Check your input…",
Toast.LENGTH_SHORT).show();
} else {
cust = new Customer();
cust.setName(dtName.getText().toString());
cust.setAddress(dtAddress.getText().toString());
cust.setPhone(dtPhone.getText().toString());
cust.setComplete(false);
util.onSaveData(cust);
onCancel();
}
}
});
btnCancel = (Button) findViewById(R.id.cancel_button);
btnCancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onCancel();
}
});
}
public void widgetUpdate(final Customer 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());
dtAddress = (EditText) findViewById(R.id.data_address);
dtAddress.setText(getCust.getAddress());
dtPhone = (EditText) findViewById(R.id.data_phone);
dtPhone.setText(getCust.getPhone());
btnSubmit = (Button) findViewById(R.id.submit_button);
btnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dtName = (EditText) findViewById(R.id.data_name);
dtAddress = (EditText) findViewById(R.id.data_address);
dtPhone = (EditText) findViewById(R.id.data_phone);
if (dtName.getText().length() < 1
|| dtAddress.getText().length() < 1
|| dtPhone.getText().length() < 1) {
Toast.makeText(DatabaseApps.this, "Check your input…",
Toast.LENGTH_SHORT);
} else {
getCust.setName(dtName.getText().toString());
getCust.setAddress(dtAddress.getText().toString());
getCust.setPhone(dtPhone.getText().toString());
util.onUpdateData(getCust);
onCancel();
}
}
});
btnCancel = (Button) findViewById(R.id.cancel_button);
btnCancel.setOnClickListener(new OnClickListener() {
@Override
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 CustomerListAdapter(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)", CustomerSQLHelper.TASK_ID,
idList);
database.delete(CustomerSQLHelper.TASKS_TABLE, where, null);
}
public void onCancel() {
Intent newIntent = new Intent().setClass(DatabaseApps.this,
DatabaseApps.class);
startActivity(newIntent);
finish();
}
}
8. Source code untuk Utils.java
package com.example.sql;
import java.util.ArrayList;
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 {
CustomerSQLHelper helper;
SQLiteDatabase database;
public Utils(Context ctx) {
helper = new CustomerSQLHelper(ctx);
database = helper.getWritableDatabase();
}
@SuppressWarnings("static-access")
public ArrayList<Customer> loadData() {
ArrayList<Customer> currentData = new ArrayList<Customer>();
Cursor dataCursor = database.query(CustomerSQLHelper.TASKS_TABLE,
new String[] { CustomerSQLHelper.TASK_ID,
CustomerSQLHelper.TASK_NAME,
CustomerSQLHelper.TASK_ADDRESS,
CustomerSQLHelper.TASK_PHONE,
CustomerSQLHelper.TASK_COMPLETE }, null, null, null,
null, String.format("%s, %s", CustomerSQLHelper.TASK_COMPLETE,
CustomerSQLHelper.TASK_NAME));
dataCursor.moveToFirst();
Customer t;
if (!dataCursor.isAfterLast()) {
do {
int id = dataCursor.getInt(0); // coloum ID
String name = dataCursor.getString(1); // coloum name
String addr = dataCursor.getString(2); // coloum address
String phon = dataCursor.getString(3); // coloum phone
String boolValue = dataCursor.getString(4); // coloum complete
boolean complete = Boolean.parseBoolean(boolValue);
t = new Customer();
t.setId(id);
t.setName(name);
t.setAddress(addr);
t.setPhone(phon);
t.setComplete(complete);
currentData.add(t);
} while (dataCursor.moveToNext());
}
/*
* while (dataCursor.moveToNext()) { }
*/
dataCursor.close();
return currentData;
}
@SuppressWarnings("static-access")
public void onSaveData(Customer getCust) {
assert (null != getCust);
ContentValues values = new ContentValues();
values.put(CustomerSQLHelper.TASK_NAME, getCust.getName());
values.put(CustomerSQLHelper.TASK_ADDRESS, getCust.getAddress());
values.put(CustomerSQLHelper.TASK_PHONE, getCust.getPhone());
values.put(CustomerSQLHelper.TASK_COMPLETE, Boolean.toString(false));
getCust.setId(database.insert(CustomerSQLHelper.TASKS_TABLE, null,
values));
}
@SuppressWarnings("static-access")
public void onUpdateData(Customer getCust) {
assert (null != getCust);
ContentValues values = new ContentValues();
values.put(CustomerSQLHelper.TASK_NAME, getCust.getName());
values.put(CustomerSQLHelper.TASK_ADDRESS, getCust.getAddress());
values.put(CustomerSQLHelper.TASK_PHONE, getCust.getPhone());
values.put(CustomerSQLHelper.TASK_COMPLETE,
Boolean.toString(getCust.isComplete()));
long id = getCust.getId();
String where = String.format("%s = %d", CustomerSQLHelper.TASK_ID, id);
database.update(CustomerSQLHelper.TASKS_TABLE, values, where, null);
}
AlertDialog alert;
public void onShowData(Customer cust, Context ctx) {
final Customer thisCust = cust;
alert = new AlertDialog.Builder(ctx)
.setIcon(R.drawable.ic_launcher)
.setTitle("Display Data")
.setMessage(
" ———— Customer ————-\n" + "ID: " + thisCust.getId()
+ "\n" + "Name: " + thisCust.getName() + "\n"
+ "Adress: " + thisCust.getAddress() + "\n"
+ "Phone: " + thisCust.getPhone() + "\n")
.setNegativeButton("Close",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int whichButton) {
alert.cancel();
}
}).create();
alert.show();
}
}
9. Source code untuk inputdata.xml
<?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" >
<TextView
android:id="@+id/txt_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="title"
android:textSize="20px" />
<EditText
android:id="@+id/data_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Name" />
<EditText
android:id="@+id/data_address"
android:layout_width="fill_parent"
android:layout_height="52dp"
android:gravity="top"
android:hint="Alamat"
android:singleLine="false" />
<EditText
android:id="@+id/data_phone"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:phoneNumber="true"
android:hint="No Telpon" />
<Button
android:id="@+id/submit_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="SAVE" />
<Button
android:id="@+id/cancel_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="CANCEL" />
</LinearLayout>
10. Source code untuk listitem.xml
<?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:background="#ffffff"
android:orientation="vertical" >
<CheckedTextView
android:id="@+id/txt_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="”Name Customer"
android:checkMark="?android:attr/listChoiceIndicatorMultiple" />
<TextView
android:id="@+id/txt_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
</LinearLayout>
11. Source code untuk listview.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:background="#ffffff"
android:orientation="vertical" >
<ListView
android:id="@+id/list_data"
android:layout_width="wrap_content"
android:layout_height="204dp"
android:layout_above="@+id/add_button"
android:layout_weight="0.74" />
<TextView
android:id="@+id/list_empty"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/add_button"
android:gravity="center_vertical|center_horizontal"
android:text="Tidak Ada Data" />
<Button
android:id="@+id/add_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="Tambah Data" />
<Button
android:id="@+id/update_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="Ubah Data" />
<Button
android:id="@+id/delete_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@id/update_button"
android:textStyle="bold"
android:text="Hapus" />
<Button
android:id="@+id/exit_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="Exit" />
</LinearLayout>
12. Source code untuk AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sql"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.sql.DatabaseApps"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.example.sql.CustomerSQLHelper" >
</activity>
</application>
</manifest>
13. Kemudian Run Project


Tidak ada komentar:
Posting Komentar