SQLite merupakan sebuah sistem manajemen basisdata relasional yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. Gampangnya, SQLite itu jenis database yang ringan dan tersedia dalam OS Android.
Langkah pertama jalankan Aplikasi IDE Android Studionya, dengan cara sebagai berikut :
- Start > Android Studio
- Pilih > Start a New Android Studio Project
- Kemudian pilih > Empty Activity > Next
- Name > Tugas12SQLite
- Package Name > ubah menjadi nama blog kalian, exp.nenengevi07.blogspot.com lalu diikuti nama project kalian.
- Save Lication D:\2021\semester6\ti2\ney Tugas 12
- Minimum API Level > API 16 > Klik Finish
- Ketikan kode-kode berikut pada Activity_main.xml
<?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/>
- Buat sebuah file layout dengan nama row.xml, nanti file ini digunakan untuk menampilkan isi kegiatan yang akan dilakukan dan disampingnya terdapat kolom hapus
- Lalu ketikan kode program berikut ini pada file row.xml
<?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>
- Setelah itu kita akan membuat Menu, caranya klik kanan pada folder res > New > Directory kemudian beri nama menu, seperti dibawah ini :
- Setelah itu buat layout baru pada directory/folder menu dengan nama layout menu.xml dengan cara klik kanan pada folder Menu>New>Layour Resources File Beri nama menu.xml lalu ketikan program berikut ini
<?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>
- Selanjutnya kita akan membuat class SQLiteOpenHelper dengan nama file DbHelper.java
- SQLiteOpenHelper adalah sebuah sebclass, yang digunakan untuk menentukan nama database dan versi database yang sedang dipakai. Kita bisa menerapkan method di class ini exp : OnCreate (SqliteDatabase) ,OnUpgrade (SqliteDatabase int int ) dan OnOpen(SqliteDatabase).
- Buat sebuah class baru dengan nama DbHelper. Kemudian implementasikan kode-kode berikut pada DbHelper.java
nenengevi07.blogspot.todolist;
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;
}
- Selanjutnya kita edit Pada MainActivty.java masukan kode-kode berikut ini.
package nenengevi07.blogspot.todolist; 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 onBackPressed() { new AlertDialog.Builder(this) .setMessage("Apa kalian ingin Menutup Aplikasi ini?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MainActivity.this.finish(); } }) .setNegativeButton("No", null) .show(); } //untuk menutup Aplikasi SQLite
public void deleteTask(View view){ View parent = (View)view.getParent(); final TextView taskTextView = (TextView)parent.findViewById(R.id.task_title); Log.e("String", (String) taskTextView.getText()); AlertDialog dialog = new AlertDialog.Builder(this) .setMessage("Apa Anda Yakin Ingin Menghapus ?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) //untuk notifikasi jika Note hendak diHAPUS { String task = String.valueOf(taskTextView.getText()); dbHelper.deleteTask(task); loadTaskList(); } }) .setNegativeButton("No", null) .show();
} }
- Ubah nama aplikasi sesuai keinginan dengan cara merubah file string.xml yang ada dalam folder. . res/values seperti berikut ini :
<resources>
<string name=="app_name">Tugas12_NoteSQLite</string>
</resources>
- Jika sudah selesai running aplikasinya pada emulator atau langsunh ke Hp kalian, seperti vidio dibawah ini