Membuat Aplikasi CRUD data kontak

Pada edisi saat ini akan di bahas tentang CRUD (Create, Read, Update Delete) dengan studi kasus data kontak pada database SQLite. Secara sederhana aplikasi yang akan di design dapat melakukan penambahan data, perubahan data, mengambil atau membaca data dan melakukan hapus data. 

activity_login.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/layHeader"
        android:orientation="horizontal" >

        <RelativeLayout
            android:id="@+id/relativeLayout1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="22dp"
            android:orientation="horizontal"
            android:padding="20dp" >

            <EditText
                android:id="@+id/text_username"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:gravity="center"
                android:hint="USERNAME"
                android:textSize="20sp" >

                <requestFocus />
            </EditText>

            <EditText
                android:id="@+id/text_pass"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/text_username"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_marginTop="21dp"
                android:gravity="center"
                android:hint="PASSWORD"
                android:inputType="textPassword"
                android:textSize="20sp" />

            <Button
                android:id="@+id/btn_cancel"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_alignRight="@+id/text_pass"
                android:layout_below="@+id/text_pass"
                android:layout_marginTop="26dp"
                android:background="#ffff4444"
                android:onClick="Batal"
                android:text="BATAL"
                android:textColor="@android:color/white"
                android:textSize="20sp"
                android:textStyle="bold" />

            <Button
                android:id="@+id/btn_login"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/btn_cancel"
                android:layout_alignBottom="@+id/btn_cancel"
                android:layout_alignLeft="@+id/text_pass"
                android:background="#00893d"
                android:onClick="Login"
                android:text="LOGIN"
                android:textColor="@android:color/white"
                android:textSize="20sp"
                android:textStyle="bold" />
        </RelativeLayout>


    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/layHeader"
        android:layout_width="fill_parent"
        android:layout_height="136dp"

        android:orientation="horizontal"
        >

       <TextView
           android:id="@+id/textView1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentBottom="true"
           android:layout_below="@+id/img"
           android:textStyle="bold"
           android:textColor="@android:color/black"
           android:layout_centerHorizontal="true"
           android:text="@string/app_name"
           android:textAppearance="?android:attr/textAppearanceMedium" />

       <ImageView
           android:id="@+id/img"
           android:layout_width="wrap_content"
           android:layout_height="100dp"
           android:layout_alignParentBottom="true"
           android:layout_alignParentLeft="true"
           android:layout_alignParentRight="true"
           android:layout_alignParentTop="true" />
       
    </RelativeLayout>
  

</RelativeLayout>


activity_main


 
<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"
    tools:context="aldo.com.ronialdo_161011400078.MainActivity" >
   
   
    <RelativeLayout
         android:layout_width="fill_parent"
           android:layout_height="match_parent"
        >

         <ListView
             android:id="@+id/listView"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:cacheColorHint="#00000000"
             android:padding="5dp"
             android:scrollingCache="false"
             android:layout_above="@+id/button1" />
        
         <Button
             android:id="@+id/button1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true"
             android:layout_alignParentLeft="true"
             android:layout_toLeftOf="@+id/textView1"
             android:background="#00893d"
             android:onClick="Tambah"
             android:text="TAMBAH"
             android:textColor="#FFFFFF"
             android:textStyle="bold" />

         <TextView
             android:id="@+id/textView1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true"
             android:layout_centerHorizontal="true"
             android:text="-" />

         <Button
             android:id="@+id/Button01"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true"
             android:layout_alignParentRight="true"
             android:layout_toRightOf="@+id/textView1"
             android:background="@android:color/holo_blue_dark"
             android:onClick="Reload"
             android:text="RELOAD"
             android:textColor="#FFFFFF"
             android:textStyle="bold" />
       
    </RelativeLayout>

   

</RelativeLayout>



activity_user.xml



<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="10dp">

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="10dp">

            <Button
                android:id="@+id/btnSimpan"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/spinner1"
                android:layout_alignLeft="@+id/spinner1"
                android:layout_marginTop="14dp"
                android:layout_toLeftOf="@+id/textView2"
                android:background="#00893d"
                android:onClick="Simpan"
                android:text="SIMPAN"
                android:textColor="#FFFFFF"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/txtNama"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/textView3"
                android:layout_alignLeft="@+id/textView3"
                android:layout_alignRight="@+id/textView3"
                android:ems="10"
                android:hint="Nama User">

                <requestFocus />
            </EditText>

            <Spinner
                android:id="@+id/spinner1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/textView1"
                android:layout_alignLeft="@+id/textView1"
                android:entries="@array/tipeUser" />

            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:layout_alignParentRight="true"
                android:text="Input Nama User"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <EditText
                android:id="@+id/txtUsername"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/TextView01"
                android:layout_alignRight="@+id/txtNama"
                android:layout_alignParentLeft="true"
                android:ems="10"
                android:hint="Username" />

            <TextView
                android:id="@+id/TextView01"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/txtNama"
                android:layout_alignLeft="@+id/txtUsername"
                android:layout_marginTop="19dp"
                android:text="Username"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <EditText
                android:id="@+id/txtPassword"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/TextView02"
                android:layout_alignRight="@+id/txtUsername"
                android:layout_alignParentLeft="true"
                android:ems="10"
                android:hint="Password"
                android:inputType="textPassword" />

            <TextView
                android:id="@+id/TextView02"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/txtUsername"
                android:layout_alignLeft="@+id/txtPassword"
                android:layout_marginTop="22dp"
                android:text="Password"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <EditText
                android:id="@+id/txtEmail"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/TextView03"
                android:layout_alignRight="@+id/textView1"
                android:layout_alignParentLeft="true"
                android:ems="10"
                android:hint="Email"
                android:inputType="textEmailAddress" />

            <TextView
                android:id="@+id/TextView03"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/txtPassword"
                android:layout_alignParentLeft="true"
                android:layout_marginTop="22dp"
                android:text="Email"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/txtEmail"
                android:layout_alignLeft="@+id/TextView03"
                android:layout_alignRight="@+id/txtPassword"
                android:text="Tipe User"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/btnSimpan"
                android:layout_centerHorizontal="true"
                android:text="TextView"
                android:visibility="invisible" />


            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignRight="@+id/spinner1"
                android:layout_alignBottom="@+id/textView2"
                android:layout_toRightOf="@+id/textView2"
                android:background="#ffff4444"
                android:onClick="Kembali"
                android:text="KEMBALI"
                android:textColor="#FFFFFF"
                android:textStyle="bold" />

        </RelativeLayout>
    </RelativeLayout>

</RelativeLayout>


list_user.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="wrap_content"
    android:layout_marginTop="10dp"
    android:padding="0dp" >

    <TextView
        android:id="@+id/tvNamaUser"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="3dp"
        android:layout_toRightOf="@+id/tvNomor"
        android:gravity="left|center_vertical"
        android:text="Nama"
        android:textColor="#000000"
        android:textSize="20dp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvEmail"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/tvNamaUser"
        android:layout_marginTop="2dip"
        android:layout_toRightOf="@+id/tvNomor"
        android:text="email"
        android:textColor="#000000"
        android:textSize="15dp"
        android:textStyle="italic" />


    <TextView
        android:id="@+id/tvTipeUser"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/tvEmail"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="1dip"
        android:layout_toRightOf="@+id/tvNomor"
        android:text="mmm"
        android:textColor="@android:color/holo_blue_dark"
        android:gravity="right"
        android:textSize="15dp"
        android:paddingRight="10dp"
        android:textStyle="bold" />
    <TextView
        android:id="@+id/tvNomor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="3dp"
        android:layout_marginRight="2dp"
        android:gravity="left"
        android:text="0"
        android:textColor="#000000"
        android:textSize="20dp"
        android:textStyle="bold" />

</RelativeLayout>




Database.java



package aldo.com.ronialdo_161011400078;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHandler extends SQLiteOpenHelper {


    // Versi database
    private static final int DATABASE_VERSION = 1;

    // Nama Database
    private static final String DATABASE_NAME = "db_user";

    // Nama Tabel
    private static final String TABLE_USER = "tb_user";

    // Colom pada tabel
    public static final String KEY_ID_USER = "id";
    public static final String KEY_NAMA = "nama";
    public static final String KEY_USERNAME = "username";
    public static final String KEY_PASSWORD = "password";
    public static final String KEY_EMAIL = "email";
    public static final String KEY_TIPE_USER = "tipe_user";



    public DatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    // Membuat Tabel
    @Override
    public void onCreate(SQLiteDatabase db) {
        dataAwal(db);
    }


    private void dataAwal(SQLiteDatabase db){

        String CREATE_modelUserS_TABLE = "CREATE TABLE " + TABLE_USER + "("
                + KEY_ID_USER + " INTEGER PRIMARY KEY," + KEY_NAMA + " TEXT," + KEY_USERNAME + " TEXT," +
                KEY_PASSWORD + " TEXT," + KEY_EMAIL + " TEXT," + KEY_TIPE_USER + " TEXT)";
        db.execSQL(CREATE_modelUserS_TABLE);

        String masterAdmin = "INSERT INTO " + TABLE_USER +"("+KEY_NAMA+","+KEY_USERNAME+","+KEY_PASSWORD+","+KEY_EMAIL+","+KEY_TIPE_USER+")" +
                " VALUES ('Master Admin','admin','admin','admin@theheran.com','SUPER ADMIN')";
        db.execSQL(masterAdmin);
    }

    // Proses Reset data
    public void prosesResetData() {
        SQLiteDatabase db = this.getWritableDatabase();
        String hapusTabel= "DROP TABLE " + TABLE_USER;
        db.execSQL(hapusTabel);
        dataAwal(db);
    }


    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_USER);
        // Create tables again
        onCreate(db);
    }


    // Tambah Data user Baru
    public void prosesTambahUser(ModelUser modelUser) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(KEY_NAMA, modelUser.getNama());
        values.put(KEY_USERNAME, modelUser.getUsername());
        values.put(KEY_PASSWORD, modelUser.getPassword());
        values.put(KEY_EMAIL, modelUser.getEmail());
        values.put(KEY_TIPE_USER, modelUser.getTipeUser());
        // Input Data
        db.insert(TABLE_USER, null, values);
        db.close();
        // Tutup koneksi database
    }

    // Update Data
    public int prosesUpdate(ModelUser modelUser) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(KEY_NAMA, modelUser.getNama());
        values.put(KEY_USERNAME, modelUser.getUsername());
        values.put(KEY_PASSWORD, modelUser.getPassword());
        values.put(KEY_EMAIL, modelUser.getEmail());
        values.put(KEY_TIPE_USER, modelUser.getTipeUser());
        //proses update tabel
        return db.update(TABLE_USER, values, KEY_ID_USER + " = ?",new String[] { String.valueOf(modelUser.getIdUser()) });
    }

    // Hapus Data
    public int prosesHapus(String idUser) {
        SQLiteDatabase db = this.getWritableDatabase();
        return db.delete(TABLE_USER, KEY_ID_USER + " = ?",new String[] {idUser });
    }


    public ModelUser getUserById(String id){
        ModelUser mdUser=null;

        String selectQuery = "SELECT  * FROM " + TABLE_USER+" where "+KEY_ID_USER+"="+id;

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        if (cursor.moveToFirst()) {
            do {
                mdUser = new ModelUser();

                mdUser.setIdUser(cursor.getString(cursor.getColumnIndex(KEY_ID_USER)));
                mdUser.setNama(cursor.getString(cursor.getColumnIndex(KEY_NAMA)));
                mdUser.setUsername(cursor.getString(cursor.getColumnIndex(KEY_USERNAME)));
                mdUser.setPassword(cursor.getString(cursor.getColumnIndex(KEY_PASSWORD)));
                mdUser.setEmail(cursor.getString(cursor.getColumnIndex(KEY_EMAIL)));
                mdUser.setTipeUser(cursor.getString(cursor.getColumnIndex(KEY_TIPE_USER)));
            } while (cursor.moveToNext());
        }

        // Tutup Koneksi
        cursor.close();
        db.close();

        return mdUser;
    }

    public ModelUser getLogin(String username,String Password){
        ModelUser mdUser=null;

        String selectQuery = "SELECT  * FROM " + TABLE_USER+" where "+KEY_USERNAME+"='"+username+"' and "+KEY_PASSWORD+"='"+Password+"'";

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        if (cursor.moveToFirst()) {
            do {
                mdUser = new ModelUser();

                mdUser.setIdUser(cursor.getString(cursor.getColumnIndex(KEY_ID_USER)));
                mdUser.setNama(cursor.getString(cursor.getColumnIndex(KEY_NAMA)));
                mdUser.setUsername(cursor.getString(cursor.getColumnIndex(KEY_USERNAME)));
                mdUser.setPassword(cursor.getString(cursor.getColumnIndex(KEY_PASSWORD)));
                mdUser.setEmail(cursor.getString(cursor.getColumnIndex(KEY_EMAIL)));
                mdUser.setTipeUser(cursor.getString(cursor.getColumnIndex(KEY_TIPE_USER)));
                mdUser.setIsLogin(true);
            } while (cursor.moveToNext());
        }else{
            mdUser = new ModelUser();
            mdUser.setIsLogin(false);
        }

        // Tutup Koneksi
        cursor.close();
        db.close();

        return mdUser;
    }


    // Method ambil semua data user
    public   Cursor prosesAmbilSemuaDatauser(){

        String selectQuery = "SELECT  * FROM " + TABLE_USER;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
        // returning cursor
        return cursor;
    }





}


ListUser.java


package aldo.com.ronialdo_161011400078;

import java.util.List;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.example.crudsqlite.R;

public class ListUserAdapter extends BaseAdapter{



    private Activity context;
    private LayoutInflater inflater;
    private List   <ModelUser > NasItem;



    public ListUserAdapter(Activity activity, List   <ModelUser > NasItem) {

        ListUserAdapter.this.context = activity;
        ListUserAdapter.this.NasItem = NasItem;
    }

    @Override
    public int getCount() {
        return NasItem.size();
    }

    @Override
    public Object getItem(int location) {
        return NasItem.get(location);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @SuppressLint("InflateParams")
    @Override
    public View getView(int position, View view, ViewGroup parent) {
        if (inflater == null)
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if (view == null) view = inflater.inflate(R.layout.list_row_user, null);

        View rowView= inflater.inflate(R.layout.list_row_user, null, true);

        TextView tvNomor = (TextView) rowView.findViewById(R.id.tvNomor);
        TextView tvNamaUser = (TextView) rowView.findViewById(R.id.tvNamaUser);
        TextView tvEmail = (TextView) rowView.findViewById(R.id.tvEmail);
        TextView tvTipeUser = (TextView) rowView.findViewById(R.id.tvTipeUser);
        ModelUser m = NasItem.get(position);

        tvNomor.setText(m.getNo());
        tvNamaUser.setText(m.getNama());
        tvEmail.setText(m.getEmail());
        tvTipeUser.setText(m.getTipeUser());
        return rowView;
    }
}

 



LoginActivity.java



package aldo.com.ronialdo_161011400078;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.example.crudsqlite.R;

public class LoginActivity extends Activity {
    EditText username,password;


    private long lastPressedTime;
    private static final int PERIOD = 2000;

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        this.finish();
    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //Handle the back button
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
            switch (event.getAction()) {
                case KeyEvent.ACTION_DOWN:
                    if (event.getDownTime() - lastPressedTime             < PERIOD) { finish(); }else { Toast.makeText(getApplicationContext(), "Tekan 2 kali untuk keluar",Toast.LENGTH_SHORT).show(); lastPressedTime = event.getEventTime(); } return true; } } return false; } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }


        username = (EditText) findViewById(R.id.text_username);
        password = (EditText) findViewById(R.id.text_pass);
        username.setText("admin");
        password.setText("admin");


    }

    public void Login (View v){
        if(username.getText().toString().isEmpty()){
            username.setError("Kosong");
        }else if(password.getText().toString().isEmpty()){
            password.setError("Kosong");
        }else{
            DatabaseHandler db = new DatabaseHandler(getApplicationContext());
            ModelUser mdUser = db.getLogin(username.getText().toString(), password.getText().toString());

            if(mdUser.getIsLogin()){
                Intent i = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(i);
                finish();
            }else{
                Toast.makeText(LoginActivity.this, "Periksa Username atau Password",Toast.LENGTH_LONG).show();
            }
        }
    }

    public void Batal (View v){
        finish();
    }


}




MainActivity.java





package aldo.com.ronialdo_161011400078;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.Toast;

import com.example.crudsqlite.R;

public class MainActivity extends Activity {

    private List   <ModelUser > newsList = new ArrayList   <ModelUser >();
    private ListUserAdapter adapter;
    ListUserAdapter custum = new ListUserAdapter(null, newsList);
    ListView listView;
    public String[] idUserArray;


    private long lastPressedTime;
    private static final int PERIOD = 2000;

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //Handle the back button
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
            switch (event.getAction()) {
                case KeyEvent.ACTION_DOWN:
                    if (event.getDownTime() - lastPressedTime    < PERIOD) {

                        finish();
                    }else {
                        Toast.makeText(getApplicationContext(), "Tekan 2 kali untuk keluar",Toast.LENGTH_SHORT).show();
                        lastPressedTime = event.getEventTime();
                    }
                    return true;
            }
        }
        return false;

    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView= (ListView)findViewById(R.id.listView);
        adapter = new ListUserAdapter(MainActivity.this, newsList);
        listView.setAdapter(adapter);
        reloadData();

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView   <? > parent, View view,final int position, long id) {

                if(idUserArray[position].equals("1")){
                    PopupMenu popup = new PopupMenu(MainActivity.this, view);
                    popup.getMenuInflater().inflate(R.menu.popup_super_admin, popup.getMenu());
                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        public boolean onMenuItemClick(MenuItem item) {

                            if(item.getTitle().equals("Edit Data")){

                                Intent i = new Intent(getApplicationContext(),ManagUserActivity.class);
                                i.putExtra("mode", "Edit");
                                i.putExtra("id_user",idUserArray[position]);
                                startActivity(i);
                                finish();

                            }
                            return true;
                        }});popup.show();

                }else{

                    PopupMenu popup = new PopupMenu(MainActivity.this, view);
                    popup.getMenuInflater().inflate(R.menu.popup, popup.getMenu());
                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        public boolean onMenuItemClick(MenuItem item) {

                            if(item.getTitle().equals("Edit Data")){

                                Intent i = new Intent(getApplicationContext(),ManagUserActivity.class);
                                i.putExtra("mode", "Edit");
                                i.putExtra("id_user",idUserArray[position]);
                                startActivity(i);
                                finish();


                            }else{

                                Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
                                alertDialog.setTitle("Hapus Data");
                                alertDialog.setMessage("Kamu Yakin Mau Hapus Data ini?");
                                alertDialog.setPositiveButton("YAKIN BANGET",
                                        new DialogInterface.OnClickListener() {
                                            public void onClick(DialogInterface dialog, int whichButton) {

                                                DatabaseHandler db = new DatabaseHandler(getApplicationContext());
                                                int status = db.prosesHapus(idUserArray[position]);
                                                if(status   >0){
                                                    Toast.makeText(MainActivity.this, "Data Berhasil Dihapus ",Toast.LENGTH_LONG).show();
                                                }else{
                                                    Toast.makeText(MainActivity.this, "Data Gagal Dihapus ",Toast.LENGTH_LONG).show();
                                                }
                                                newsList.clear();
                                                reloadData();

                                            }
                                        });

                                alertDialog.setNegativeButton("ENGGAK",
                                        new DialogInterface.OnClickListener() {
                                            public void onClick(DialogInterface dialog, int whichButton) {

                                            }
                                        });
                                alertDialog.show();
                            }
                            return true;
                        }});popup.show();
                }




            }
        });

    }

    public View Tambah(View v){
        Intent i = new Intent(getApplicationContext(),ManagUserActivity.class);
        i.putExtra("mode", "Tambah");
        startActivity(i);
        finish();
        return v;
    }

    public View Reload(View v){
        reloadData();
        return v;
    }

    private void reloadData(){
        DatabaseHandler db = new DatabaseHandler(getApplicationContext());
        Cursor cursor=db.prosesAmbilSemuaDatauser();

        if (cursor.moveToFirst()) {

            idUserArray=new String[cursor.getCount()];
            int i=0,No=1;
            newsList.clear();
            do {
                ModelUser mdUser = new ModelUser();

                mdUser.setIdUser(cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_ID_USER)));
                mdUser.setNama(cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_NAMA)));
                mdUser.setUsername(cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_USERNAME)));
                mdUser.setPassword(cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_PASSWORD)));
                mdUser.setEmail(cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_EMAIL)));
                mdUser.setTipeUser(cursor.getString(cursor.getColumnIndex(DatabaseHandler.KEY_TIPE_USER)));
                mdUser.setNo(String.valueOf(No)+".");

                idUserArray[i] = mdUser.getIdUser();

                No++;
                i++;
                newsList.add(mdUser);
            } while (cursor.moveToNext());

            // Tutup Koneksi
            cursor.close();
            db.close();
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_action, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_reset) {

            Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
            alertDialog.setTitle("Reset Data");
            alertDialog.setMessage("Kamu Yakin Mau Reset Data?");
            alertDialog.setPositiveButton("YAKIN BANGET",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            DatabaseHandler db = new DatabaseHandler(getApplicationContext());
                            db.prosesResetData();
                            reloadData();

                        }
                    });

            alertDialog.setNegativeButton("ENGGAK",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {

                        }
                    });
            alertDialog.show();

            return true;
        }else{
            Intent i = new Intent(getApplicationContext(),LoginActivity.class);
            startActivity(i);
            finish();
        }
        return super.onOptionsItemSelected(item);
    }


}






ManageUser.java



package aldo.com.ronialdo_161011400078;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import com.example.crudsqlite.R;

public class ManagUserActivity extends Activity {


    EditText nama,username,password,email; //declarasi EditText
    Spinner tipeUser;String mode="",idUser="0";
    Button btnSimpan;


    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //Handle the back button
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
            switch (event.getAction()) {
                case KeyEvent.ACTION_DOWN:

                    Intent i = new Intent(getApplicationContext(),MainActivity.class);
                    startActivity(i);
                    finish();

                    return true;
            }
        }
        return false;

    }

    private static  String EMAIL_REGEX = "^[\\w-_\\.+]*[\\w-_\\.]\\@([\\w]+\\.)+[\\w]+[\\w]$";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_manag_user);


        nama =(EditText) findViewById(R.id.txtNama);
        username =(EditText) findViewById(R.id.txtUsername);
        password =(EditText) findViewById(R.id.txtPassword);
        email =(EditText) findViewById(R.id.txtEmail);

        tipeUser =(Spinner) findViewById(R.id.spinner1);
        btnSimpan=(Button) findViewById(R.id.btnSimpan);

        //Cek mode hasil parameter yang dikirim oleh class MainActivity.java
        Intent in = this.getIntent();
        mode= in.getStringExtra("mode");

        if(mode.equals("Edit")){
            idUser =  in.getStringExtra("id_user");
            if(idUser.equals("1")){
                username.setEnabled(false);
                password.setEnabled(false);
            }else{
                username.setEnabled(true);
                password.setEnabled(true);
            }

            DatabaseHandler db = new DatabaseHandler(getApplicationContext());
            ModelUser dataUser = db.getUserById(idUser);

            nama.setText(dataUser.getNama());
            username.setText(dataUser.getUsername());
            password.setText(dataUser.getPassword());
            email.setText(dataUser.getEmail());
            tipeUser.setSelection(getSelection(dataUser.getTipeUser()));

        }

    }

    // handle tombol Simpan. pada XML layout tombol sudah di beri properti onClick dan di beri nama "Simpan"
    public View Simpan(View v){
        if(nama.getText().toString().isEmpty()){
            nama.setError("Form Kosong");
        }else if(username.getText().toString().isEmpty()){
            username.setError("Form Kosong");
        }else if(password.getText().toString().isEmpty()){
            password.setError("Form Kosong");
        }else if(email.getText().toString().isEmpty()){
            email.setError("Form Kosong");
        }else if(!email.getText().toString().matches(EMAIL_REGEX)){
            email.setError("Format Email Salah");
        }else if(tipeUser.getSelectedItemPosition()==0){
            Toast.makeText(ManagUserActivity.this, "Silahkan Tentukan Tipe User",Toast.LENGTH_LONG).show();
        }else{
            ModelUser mdUser = new ModelUser();
            mdUser.setNama(nama.getText().toString());
            mdUser.setUsername(username.getText().toString());
            mdUser.setPassword(password.getText().toString());
            mdUser.setEmail(email.getText().toString());
            mdUser.setTipeUser(tipeUser.getSelectedItem().toString());

            DatabaseHandler db = new DatabaseHandler(getApplicationContext());


            if(mode.equals("Edit")){
                mdUser.setIdUser(idUser);
                int status = db.prosesUpdate(mdUser);
                if(status   >0){
                    Toast.makeText(ManagUserActivity.this, "Data Berhasil Diubah ",Toast.LENGTH_LONG).show();

                }else{
                    Toast.makeText(ManagUserActivity.this, "Data Gagal Diubah ",Toast.LENGTH_LONG).show();
                }

                Intent i = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(i);
                finish();


            }else{
                db.prosesTambahUser(mdUser);
                Toast.makeText(ManagUserActivity.this, "Proses Berhasil ",Toast.LENGTH_LONG).show();

                Intent i = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(i);
                finish();
            }

        }

        return v;
    }

    public View Kembali(View v){
        Intent i = new Intent(getApplicationContext(),MainActivity.class);
        startActivity(i);
        finish();
        return v;
    }


    private int getSelection(final String tipeUser){
        int val= 0;

        if(tipeUser.equals("SUPER ADMIN")){
            val= 1;
        }else if(tipeUser.equals("USER")){
            val= 2;
        }

        return val;
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.manag_user, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_logouts) {

            Intent i = new Intent(getApplicationContext(),LoginActivity.class);
            startActivity(i);
            finish();

            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}


Hasil Run








Demikian Membuat Aplikasi CRUD data kontak di Android Studio.
Terima kasih

Komentar

Postingan populer dari blog ini

PROJECT UTS APLIKASI TIKET PESAWAT