Cara Membuat CRUD SQLite Database Tugas 3

3
  1. Buat Project android disini saya beri nama tugas 3
  2. Kemudian pada folder layout perhatikan gambar berikut :
    2
  3. inputdata.xml <?xml version=”1.0″ encoding=”utf-8″?>
    <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
        android:orientation=”vertical”
        android:layout_width=”match_parent”
        android:layout_height=”match_parent”
        android:background=”#000000″>
        <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=”Your name”/>
        
        <EditText
            android:id=”@+id/data_address”
            android:layout_width=”fill_parent”
            android:layout_height=”100px”
            android:hint=”Your address”
            android:gravity=”top”
            android:singleLine=”false”/>
            
        <EditText
            android:id=”@+id/data_phone”
            android:layout_width=”fill_parent”
            android:layout_height=”wrap_content”
            android:phoneNumber=”true”
            android:hint=”Your phone” />
                
        <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>
  4. listitem.xml <?xml version=”1.0″ encoding=”utf-8″?>
    <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
    android:orientation=”vertical”
    android:layout_width=”fill_parent”
    android:layout_height=”fill_parent”
    android:padding=”5px” >
    <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_height=”wrap_content”
    android:layout_width=”wrap_content”
    android:visibility=”gone”/>
    </LinearLayout>
  5. listview.xml <?xml version=”1.0″ encoding=”utf-8″?>
    <RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
    android:orientation=”vertical”
    android:layout_width=”fill_parent”
    android:layout_height=”fill_parent”
    android:background=”#000000″>
    <ListView
    android:id=”@+id/list_data”
    android:layout_width=”fill_parent”
    android:layout_above=”@+id/add_button”
    android:layout_height=”fill_parent”/>
    <TextView
    android:layout_width=”fill_parent”
    android:layout_height=”wrap_content”
    android:id=”@+id/list_empty”
    android:text=”Tidak Ada Data”
    android:gravity=”center_vertical|center_horizontal”
    android:layout_above=”@+id/add_button”/>
    <Button
    android:id=”@+id/add_button”
    android:layout_width=”wrap_content”
    android:layout_height=”wrap_content”
    android:layout_alignParentBottom=”true”
    android:text=”Add”
    android:layout_marginLeft=”35px”/>
    <Button
    android:id=”@+id/update_button”
    android:layout_width=”wrap_content”
    android:layout_height=”wrap_content”
    android:layout_alignParentBottom=”true”
    android:layout_toRightOf=”@id/add_button”
    android:text=”Update”/>
    <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:text=”Delete”/>
    <Button
    android:id=”@+id/exit_button”
    android:layout_width=”wrap_content”
    android:layout_height=”wrap_content”
    android:layout_alignParentBottom=”true”
    android:layout_toRightOf=”@id/delete_button”
    android:text=”Exit”/>
    </RelativeLayout>
  6. Perhatikan pada folder src :
    1
  7. Customer.java package com.wilis.databaseapp;
    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;
    }
    }
  8. CustomerListAdapter.java package com.wilis.databaseapp;
    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;
    }
    }
  9. CustomerSQLHelper.java package com.wilis.databaseapp;
    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) {
    }
    }
  10. DatabaseApps.java package com.wilis.databaseapp;
    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();
    }
    }
  11. Utils.java package com.wilis.databaseapp;
    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;
    import android.view.Gravity;
    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.icon)
    .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();
    }
    }
  12. Cobalah Running project
  13. hasil running awal
    3

Komentar

Postingan populer dari blog ini

Cara Buat Form Login & Register Database MYSQL Dengan Eclipse Adt

Cara Buat Aplikasi Android Biodata

Cara Buat Aplikasi Android From Login & Register