1
Buka aplikasi Android Studio.
2
Pilih Create New Project, kemudian pilih Empty Activity, lalu klik Next.
3
Berikan nama sesuai selera (kalo ane TodolistSQLite). Ubah Language ke Java, kemudian pilih Finish.
4
Masukkan kode di bawah ke activity_main.xml.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="20dp" android:background="#f5f5dc" tools:context=".MainActivity"> <ListView android:id="@+id/lstTask" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> |
5
Buat sebuah layout bernama row.xml di dalam folder res/layout. Kemudian masukkan kode di bawah.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="20dp" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#f5f5dc"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/task_title" android:text="Example" android:textSize="20sp" android:layout_alignParentStart="true" android:layout_alignParentLeft="true"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btnDelete" android:text="HAPUS" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:onClick="deleteTask"/> </RelativeLayout> |
6
Buat sebuah layout bernama menu.xml di dalam folder res/menu (buat dahulu foldernya). Kemudian masukkan kode di bawah.1 2 3 4 5 6 7 8 9 10 | <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_add_task" android:icon="@android:drawable/ic_menu_add" android:title="Tambah Tugas " app:showAsAction="always" /> </menu> |
7
Buat class baru bernama DbHelper, lalu masukkan kode di bawah. Ingat, jangan copy baris pertama.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package arifsuhendraixg12.blogspot.com.todolistsqlite; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.util.ArrayList; public class DbHelper extends SQLiteOpenHelper { private static final String DB_NAME="EDMTDev"; private static final int DB_VER = 1; public static final String DB_TABLE="Task"; public static final String DB_COLUMN = "TaskName"; public DbHelper(Context context) { super(context, DB_NAME, null, DB_VER); } @Override public void onCreate(SQLiteDatabase db) { String query = String.format("CREATE TABLE %s (ID INTEGER PRIMARY KEY AUTOINCREMENT,%s TEXT NOT NULL);", DB_TABLE,DB_COLUMN); db.execSQL(query); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String query = String.format("DELETE TABLE IF EXISTS %s",DB_TABLE); db.execSQL(query); onCreate(db); } public void insertNewTask(String task){ SQLiteDatabase db= this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(DB_COLUMN,task); db.insertWithOnConflict(DB_TABLE,null,values,SQLiteDatabase.CONFLICT_REPLACE); db.close(); } public void deleteTask(String task){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(DB_TABLE,DB_COLUMN + " = ?",new String[]{task}); db.close(); } public ArrayList<String> getTaskList(){ ArrayList<String> taskList = new ArrayList<>(); SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(DB_TABLE,new String[]{ DB_COLUMN},null,null,null,null,null); while(cursor.moveToNext()){ int index = cursor.getColumnIndex(DB_COLUMN); taskList.add(cursor.getString(index)); } cursor.close(); db.close(); return taskList; } } |
8
Masukkan kode di bawah ke MainActivity.java. Sekali lagi, pada baris pertama tergantung nama aplikasi kalian, jadi jangan copy baris pertama!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | package arifsuhendraixg12.blogspot.com.todolistsqlite; import android.content.DialogInterface; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { DbHelper dbHelper; ArrayAdapter<String> mAdapter; ListView lstTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbHelper = new DbHelper(this); lstTask = (ListView)findViewById(R.id.lstTask); loadTaskList(); } private void loadTaskList() { ArrayList<String> taskList = dbHelper.getTaskList(); if(mAdapter==null){ mAdapter = new ArrayAdapter<String>(this,R.layout.row,R.id.task_title,taskList); lstTask.setAdapter(mAdapter); } else{ mAdapter.clear(); mAdapter.addAll(taskList); mAdapter.notifyDataSetChanged(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu,menu); //Change menu icon color Drawable icon = menu.getItem(0).getIcon(); icon.mutate(); icon.setColorFilter(getResources().getColor(android.R.color.white), PorterDuff.Mode.SRC_IN); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.action_add_task : final EditText taskEditText = new EditText(this); AlertDialog dialog = new AlertDialog.Builder(this) .setTitle("Tambah Tugas") .setMessage("Apa yang kamu ingin lakukan hari ini ?") .setView(taskEditText) .setPositiveButton("Tambah", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String task = String.valueOf(taskEditText.getText()); dbHelper.insertNewTask(task); loadTaskList(); } } ) .setNegativeButton("Batal",null) .create(); dialog.show(); return true; } return super.onOptionsItemSelected(item); } public void deleteTask(View view){ View parent = (View)view.getParent(); TextView taskTextView = (TextView)parent.findViewById(R.id.task_title); Log.e("String", (String) taskTextView.getText()); AlertDialog dialog = new AlertDialog.Builder(this) .setTitle("Konfirmasi") .setMessage("Apa kalian ingin hapus data ini?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { String task = String.valueOf(taskTextView.getText()); dbHelper.deleteTask(task); loadTaskList(); } }) .setNegativeButton("No", null) .show(); } } |
9
Run (SHIFT + F10), atau langsung compile ke hp lo!
Tidak ada komentar:
Posting Komentar