Selasa, 13 Juni 2017

Aplikasi Input Data

Aplikasi Input Data
Untuk pertemuan kali ini saya akan menjelaskan tentang bagaimana cara membuat input data dengan menggunakan SQLite, dimana fungsi dari SQLite ini adalah sebagai alat untuk menyimpan data yang kita input menggunakan aplikasi ini. Untuk lebih jelasnya saya akan menjelaskan cara – cara untuk membuat aplikasi ini.
Berikut ini adalah cara – cara yang saya gunakan untuk membuat sebuah desain atau tampilan untuk membuat aplikasi tentang android.
Langkah pertama yang saya lakukan adalah membuka aplikasi android.
Kemudian kita atur tempat penyimpanan project
Setelah itu kita buat nama project dari aplikasi tersebut seperti contoh dibawah ini
Setelah itu saya membuat dasain background untuk tampilan aplikasi dengan menggunakan photoshop, dan dibawah ini adalah hasil gambar yang saya buat menggunakan photoshop.

C:\Users\Aras\Pictures\coba.jpg

Setelah selesai saya membuat tampilan layout dan saya menambahkan Textview, Edittext, dan Button untuk membuat aplikasi. Untuk lebih jelasnya dibawah ini ada source kode untuk tampilan layout nama filenya 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:background="@drawable/coba"
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:textColor="#ffffffff"
       android:textSize="20px" />

   <EditText
       android:id="@+id/data_name"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:textColor="#ffffffff"
       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:textColor="#ffffffff"
       android:singleLine="false" />

   <EditText
       android:id="@+id/data_phone"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:phoneNumber="true"
       android:textColor="#ffffffff"
       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>
Kemudian kita buat lagi file xml dengan nama 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>
Setelah itu kita tambahkan lagi file xml dengan nama 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="@drawable/coba"
   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:textColor="#ffffffff"
       android:text="Tidak Ada Data" />

   <Button
       android:id="@+id/add_button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="35px"
       android:textStyle="bold"
       android:text="Tambah Data" />

   <Button
       android:id="@+id/update_button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textStyle="bold"
       android:text="Ubah Data" />

   <Button
       android:id="@+id/delete_button"
       android:layout_width="wrap_content"
       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="wrap_content"
       android:layout_height="wrap_content"
       android:textStyle="bold"
       android:text="Exit" />

</LinearLayout>

Setalah tampilan layout selesai sekarang kita buat file java untuk menjalankan aplikasi. dibawah ini adalah nama file java yang kita buat untuk mendukung jalannya aplikasi.

  • Costumer.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;
}
}

  • CostumerListAdapter.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;
}
}

  • CostumerSQLHelper.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) {
}
}

  • 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();
}
}

  • 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();
}
}

Setelah selesai kita coba jalankan di emulator aplikasi android eclipse dan hasilnya :
  • Tambah data
Klik button save untuk menyimpan data
  • Ubah data
Centang kotak yang akan diubah kemudian pilih ubah data
  • Hapus data
Untuk menghapus data centang data yang mau di ubah lalu pilih button delete untuk menghapus data.

Baiklah tadi saya sudah menjelaskan cara – cara membuat aplikasi input data semoga apa yang saya buat ini bisa berguna untuk pembaca.
Read More ->>
Diberdayakan oleh Blogger.

Followers