Anda di halaman 1dari 24

04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

Cara Membuat CRUD SQLite Database


Android Studio
Published by farizdotid on February 19, 2019

Pada tutorial pemrograman android kali ini kita akan membahas mengenai CRUD SQLite Database.
Apa itu CRUD ? CRUD ini adalah singkatan dari Create Read Update Delete. Apa itu SQLite ? SQLite ini
kalau menurut versi saya adalah tempat penyimpanan suatu data atau database yang tempatnya ada
di local storage device android. Kalau dari situs resminya SQLite ini adalah SQLite is a opensource SQL
database that stores data to a text le on a device. Android comes in with built in SQLite database
implementation. SQLite supports all the relational database features. In order to access this database,
you don’t need to establish any kind of connections for it like JDBC,ODBC e.t.c

https://farizdotid.com/crud-sqlite-android-studio/ 1/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

Cara Membuat CRUD SQLite Database Android Studio

Pada tutorial pemrograman android ini, untuk membuat databasenya kita akan menggunakan bantuan
library Greendao. Library Greendao ini adalah library buatan dari GreenRobot, Nah daripada bingung
saya akan mengkutip istilah Greendao ini itu apa. Menurut situs resminya : greenDAO is an open source
Android ORM making development for SQLite databases fun again. It relieves developers from dealing
with low-level database requirements while saving development time. SQLite is an awesome embedded
relational database. Still, writing SQL and parsing query results are quite tedious and time-consuming
tasks. greenDAO frees you from these by mapping Java objects to database tables (called ORM,
“object/relational mapping”). This way you can store, update, delete, and query for Java objects using a
simple object oriented API.

Ada apa aja tur dari Greendao ini ?

Maximum performance (probably the fastest ORM for Android); our benchmarks are open
sourced too
Easy to use powerful APIs covering relations and joins
Minimal memory consumption
Small library size (<100KB) to keep your build times low and to avoid the 65k method limit
Database encryption: greenDAO supports SQLCipher to keep your user’s data safe
Strong community: More than 5.000 GitHub stars show there is a strong and active community

Kalian bisa mengunjungi situs resminya di http://greenrobot.org/greendao/

Nah, Dari sini kalian sudah tau maksud dari tujuan artikel Cara Membuat CRUD SQLite Database
Android Studio ini itu apa. Sekarang kita masuk ke bagaimana cara implementasi CRUD SQLite
Database, lets coding!

 
https://farizdotid.com/crud-sqlite-android-studio/ 2/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

Daftar Isi [ hide ]

1 Persiapan nama project


2 Tambahkan library Greendao dan library pendukung lainnya
2.1 Library Greendao pada root gradle
2.2 Sync Project
3 Persiapan struktur folder
3.1 Buat class TblPengeluaran
3.2 Build Generator
3.3 Buat class DaoHandler
4 Buat class FunctionHelper
4.1 Menambahkan fungsi
5 Buat activity CreateActivity
5.1 Layout activity create
5.2 Inisialisasi Komponen
6 Buat fragment EditDialogFragment
7 Buat class adapter pengeluaran
8 Layout activity main
9 Persiapan home activity
10 Run application
11 Screenshot Aplikasi
12 Download Project Cara Membuat CRUD SQLite Database Android Studio

Persiapan nama project


Buat project dengan nama SampleCrudGreendao.

Tambahkan library Greendao dan library pendukung lainnya


Buka le build.gradle ( module:app ) lalu tambahkan beberapa code seperti berikut :

1 apply plugin: 'com.android.application'


2 apply plugin: 'org.greenrobot.greendao' // <-- Add this line
3  
4 android {
5     compileSdkVersion 28
6     defaultConfig {
7         applicationId "com.app.samplecrudgreendao"
8         minSdkVersion 21
9         targetSdkVersion 28
10         versionCode 1
11         versionName "1.0"
12         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
13     }
14     buildTypes {
15         release {
16             minifyEnabled false
17             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rul
18         }
19     }
20 }
21  
22 dependencies {
23     implementation fileTree(dir: 'libs', include: ['*.jar'])
24     implementation 'com.android.support:appcompat-v7:28.0.0'
25     implementation 'com.android.support.constraint:constraint-layout:1.1.3'
https://farizdotid.com/crud-sqlite-android-studio/ 3/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
26     implementation 'com.android.support:design:28.0.0' // <-- Add this line
27     implementation 'com.android.support:cardview-v7:28.0.0' // <-- Add this line
28     implementation 'com.android.support:recyclerview-v7:28.0.0' // <-- Add this line
29  
30     implementation 'com.jakewharton:butterknife:8.8.0' // <-- Add this line
31  
32     implementation 'org.greenrobot:greendao:3.2.2' // <-- Add this line
33  
34     annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.0' // <-- Add this line
35  
36     testImplementation 'junit:junit:4.12'
37     androidTestImplementation 'com.android.support.test:runner:1.0.2'
38     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
39 }
40  
41 greendao { // <-- Add this line
42     schemaVersion 1 // <-- Add this line
43 } // <-- Add this line

#NOTE :

Untuk penambahan kodenya kalian hanya cukup meng-copy paste / mengetik yang ada tanda “Add this
line”nya saja.

Library Greendao pada root gradle


Buka le build.gradle (Project : SampleCrudGreendao) lalu tambahkan kode seperti berikut :

1 // Top-level build file where you can add configuration options common to all sub-projects/modul
2  
3 buildscript {
4     repositories {
5         google()
6         jcenter()
7         mavenCentral()
8     }
9     dependencies {
10         classpath 'com.android.tools.build:gradle:3.3.1'
11         classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // <-- Add this line
12         // NOTE: Do not place your application dependencies here; they belong
13         // in the individual module build.gradle files
14     }
15 }
16  
17 allprojects {
18     repositories {
19         google()
20         jcenter()
21         
22     }
23 }
24  
25 task clean(type: Delete) {
26     delete rootProject.buildDir
27 }

Sync Project
Jika semua sudah tercopy – paste kalian bisa langsung mengklik action button “Sync Now” agar proses
pengambilan library segera diproses.

Persiapan struktur folder


https://farizdotid.com/crud-sqlite-android-studio/ 4/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

Buatlah sebuah package folder dengan nama – nama folder sebagai berikut :

-create

-edit

-home

-utils

–database

Cara Membuat CRUD SQLite


Database Android Studio-1

Buat class TblPengeluaran


Didalem folder database tambahkan class baru dengan nama TblPengeluaran. Lalu isi dengan kode
berikut :

1 @Entity
2 public class TblPengeluaran {
3  
4     @Id(autoincrement = true)
5     private Long idTblPengeluaran;
6  
7     private String pengeluaran;
8     private int nominal;
9 }

#NOTE :

Anotasi @Entitiy ini adalah untuk kasih tau ke generatornya si Greendao bahwa class ini adalah untuk
menjadi struktur tabelnya. Lalu untuk @Id(autoincrement = true) ini adalah kasih tau ke generator
bahwa idTblPengeluaran ini bentuknya unik atau bertambah setiap saat. Jadi kurang lebih maksud
class ini untuk membuat struktur tabel pada databasenya.

Build Generator
Jika kalian sudah membuat class untuk pengaturan tabelnya, Sekarang kamu klik icon palu ( build ) lalu
tungu beberapa saat. Fungsi itu untuk menjalankan generator Greendaonya.

https://farizdotid.com/crud-sqlite-android-studio/ 5/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

Nanti secara otomatis Greendao akan membuat class untuk kebutuhan development kita. Hasil kode
yang kita build adalah sebagai berikut :

1 package com.app.samplecrudgreendao.utils.database;
2  
3 import org.greenrobot.greendao.annotation.Entity;
4 import org.greenrobot.greendao.annotation.Id;
5 import org.greenrobot.greendao.annotation.Generated;
6  
7 /**
8 * Created by Fariz Ramadhan.
9 * website : https://farizdotid.com/
10 * github : https://github.com/farizdotid
11 * linkedin : https://www.linkedin.com/in/farizramadhan/
12 */
13 @Entity
14 public class TblPengeluaran {
15  
16     @Id(autoincrement = true)
17     private Long idTblPengeluaran;
18  
19     private String pengeluaran;
20     private int nominal;
21     @Generated(hash = 388400954)
22     public TblPengeluaran(Long idTblPengeluaran, String pengeluaran, int nominal) {
23         this.idTblPengeluaran = idTblPengeluaran;
24         this.pengeluaran = pengeluaran;
25         this.nominal = nominal;
26     }
27     @Generated(hash = 177408923)
28     public TblPengeluaran() {
29     }
30     public Long getIdTblPengeluaran() {
31         return this.idTblPengeluaran;
32     }
33     public void setIdTblPengeluaran(Long idTblPengeluaran) {
34         this.idTblPengeluaran = idTblPengeluaran;
35     }
36     public String getPengeluaran() {
37         return this.pengeluaran;
38     }
39     public void setPengeluaran(String pengeluaran) {
40         this.pengeluaran = pengeluaran;
41     }
42     public int getNominal() {
43         return this.nominal;
44     }
45     public void setNominal(int nominal) {
46         this.nominal = nominal;
47     }
48 }

Buat class DaoHandler


Tambahkan class baru dengan nama DaoHandler lalu tambahkan fungsi static untuk memanggil
DaoSession. Untuk kodenya seperti berikut :

1 public class DaoHandler {


2     public static DaoSession getInstance(Context context) {
3         DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "catatpengeluaran_d
4         SQLiteDatabase db = helper.getWritableDatabase();
5  
6         DaoMaster daoMaster = new DaoMaster(db);
7         return daoMaster.newSession();
8     }
9 }

https://farizdotid.com/crud-sqlite-android-studio/ 6/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

#NOTE :

Pada value “catatpengeluaran_db” ini adalah nama databasenya. Class ini berfunsi untuk kebutuhan
inisialisasi pengaturan Greendao, Nantinya kalian hanya tinggal panggil kode ini saja untuk memanggil
fungsi Greendao seperti get tabel pada database ataupun kebutuhan-kebutuhan SQLite lainnya.

Buat class FunctionHelper


Pada package utils, tambahkan class baru dengan nama FunctionHelper. Class ini berfungsi untuk
menyompan beberapa fungsi yang dibutuhkan nantinya supaya fungsi yang dibuat tidak berulang-
ulang.

Menambahkan fungsi
Pada class FunctionHelper buatlah sebuah fungsi untuk meng-convert suatu nilai ke dalam format
uang rupiah. Untuk kodenya seperti ini :

1 /*
2 Fungsi untuk mengconvert sebuah nilai menjadi format Rupiah.
3 Contoh : 1000 akan menjadi Rp1.000
4 */
5 public static String convertRupiah(int nominal){
6     Locale localeID = new Locale("in", "ID");
7     NumberFormat formatRupiah = NumberFormat.getCurrencyInstance(localeID);
8     return formatRupiah.format(nominal);
9 }

Buat activity CreateActivity


Pada folder atau package create tambahkan activity baru dengan nama CreateActivity. CreateActivity
ini untuk membuat data sesuai dengan kebutuhan user.

Layout activity create


Buka layout activity_create, Lalu isi dengan beberapa widget seperti ini :

1 <?xml version="1.0" encoding="utf-8"?>


2 <LinearLayout
3     xmlns:android="http://schemas.android.com/apk/res/android"
4     xmlns:app="http://schemas.android.com/apk/res-auto"
5     xmlns:tools="http://schemas.android.com/tools"
6     android:layout_width="match_parent"
7     android:layout_height="match_parent"
8     android:padding="16dp"
9     android:orientation="vertical"
10     tools:context=".create.CreateActivity">
11  
12     <android.support.design.widget.TextInputLayout
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content"
15         android:hint="@string/title_pembelian">
16  
17         <EditText
18             android:id="@+id/etPembelian"
19             android:layout_width="match_parent"
20             android:layout_height="wrap_content"
21             android:inputType="textMultiLine"

https://farizdotid.com/crud-sqlite-android-studio/ 7/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
22             android:textSize="16sp"
23             android:textColor="@color/primary_text"
24             android:fontFamily="@font/notosans_regular"/>
25     </android.support.design.widget.TextInputLayout>
26  
27     <android.support.design.widget.TextInputLayout
28         android:layout_width="match_parent"
29         android:layout_height="wrap_content"
30         android:layout_marginTop="16dp"
31         android:hint="@string/title_nominal">
32  
33         <EditText
34             android:id="@+id/etNominal"
35             android:layout_width="match_parent"
36             android:layout_height="wrap_content"
37             android:inputType="number"
38             android:textSize="16sp"
39             android:textColor="@color/primary_text"
40             android:fontFamily="@font/notosans_regular" />
41     </android.support.design.widget.TextInputLayout>
42  
43     <Button
44         android:id="@+id/btnSimpan"
45         android:layout_width="match_parent"
46         android:layout_height="wrap_content"
47         android:fontFamily="@font/notosans_bold"
48         android:layout_marginTop="16dp"
49         android:text="@string/title_simpan"
50         android:textSize="14sp"
51         android:textColor="@android:color/white"
52         android:background="@color/colorPrimaryDark"/>
53 </LinearLayout>

Inisialisasi Komponen
Pada class CreateActivity lalu inisialisasikan komponen widget yang sudah kita buat pada layout
activity_create dan inisialisasi beberapa class untuk kebutuhan Create ini.

1 @BindView(R.id.etPembelian)
2 EditText etPembelian;
3 @BindView(R.id.etNominal)
4 EditText etNominal;
5 @BindView(R.id.btnSimpan)
6 Button btnSimpan;
7  
8 private Unbinder unbinder;
9 private DaoSession daoSession;

Lalu didalam onCreate tambahkan kode berikut :

1 Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
2         getSupportActionBar().setDisplayShowHomeEnabled(true);
3         getSupportActionBar().setTitle("Buat pengeluaran");
4  
5         unbinder = ButterKnife.bind(this);
6         daoSession = DaoHandler.getInstance(this);
7  
8         btnSimpan.setOnClickListener(new View.OnClickListener() {
9             @Override
10             public void onClick(View v) {
11                 String pembelian = etPembelian.getText().toString();
12                 String nominal = etNominal.getText().toString();
13  
14                 if (pembelian.isEmpty() || nominal.isEmpty()){
15                     Toast.makeText(CreateActivity.this, "Data tidak boleh kosong", Toast.LENGTH_
16                 } else {
17                     TblPengeluaran tblPengeluaran = new TblPengeluaran();
https://farizdotid.com/crud-sqlite-android-studio/ 8/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
18                     tblPengeluaran.setPengeluaran(pembelian);
19                     tblPengeluaran.setNominal(Integer.parseInt(nominal));
20                     daoSession.getTblPengeluaranDao().insert(tblPengeluaran);
21  
22                     Toast.makeText(CreateActivity.this, "Berhasil menginput data",
23                             Toast.LENGTH_SHORT).show();
24                     startActivity(new Intent(CreateActivity.this, HomeActivity.class)
25                             .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR
26                     finish();
27                 }
28             }
29         });

Untuk full source code pada CreateActivity sebagai berikut :

1 public class CreateActivity extends AppCompatActivity {


2  
3     @BindView(R.id.etPembelian)
4     EditText etPembelian;
5     @BindView(R.id.etNominal)
6     EditText etNominal;
7     @BindView(R.id.btnSimpan)
8     Button btnSimpan;
9  
10     private Unbinder unbinder;
11     private DaoSession daoSession;
12  
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.activity_create);
17  
18         Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
19         getSupportActionBar().setDisplayShowHomeEnabled(true);
20         getSupportActionBar().setTitle("Buat pengeluaran");
21  
22         unbinder = ButterKnife.bind(this);
23         daoSession = DaoHandler.getInstance(this);
24  
25         btnSimpan.setOnClickListener(new View.OnClickListener() {
26             @Override
27             public void onClick(View v) {
28                 String pembelian = etPembelian.getText().toString();
29                 String nominal = etNominal.getText().toString();
30  
31                 if (pembelian.isEmpty() || nominal.isEmpty()){
32                     Toast.makeText(CreateActivity.this, "Data tidak boleh kosong", Toast.LENGTH_
33                 } else {
34                     /*
35                     Fungsi untuk menambahkan data kedalam database. Disini kita menambahkan data
36                     kedalam tabel TblPengeluaran.
37                     Di Greendao jika mau menambakan data fungsi yang kita panggil adalah insert.
38                      */
39                     TblPengeluaran tblPengeluaran = new TblPengeluaran();
40                     tblPengeluaran.setPengeluaran(pembelian);
41                     tblPengeluaran.setNominal(Integer.parseInt(nominal));
42                     daoSession.getTblPengeluaranDao().insert(tblPengeluaran);
43  
44                     Toast.makeText(CreateActivity.this, "Berhasil menginput data",
45                             Toast.LENGTH_SHORT).show();
46                     startActivity(new Intent(CreateActivity.this, HomeActivity.class)
47                             .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR
48                     finish();
49                 }
50             }
51         });
52     }
53  
54     @Override
55     public boolean onSupportNavigateUp() {
56         onBackPressed();
https://farizdotid.com/crud-sqlite-android-studio/ 9/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
57         return true;
58     }
59  
60     @Override
61     protected void onDestroy() {
62         super.onDestroy();
63         unbinder.unbind();
64     }
65 }

Buat fragment EditDialogFragment


Pada package edit buatlah sebuah dialog fragment dengan nama EditDialogFragment. Lalu isi dengan
kode berikut :

1 public class EditDialogFragment extends DialogFragment {


2  
3     @BindView(R.id.etPembelian)
4     EditText etPembelian;
5     @BindView(R.id.etNominal)
6     EditText etNominal;
7     @BindView(R.id.btnSimpan)
8     Button btnSimpan;
9  
10     private Unbinder unbinder;
11     private EditDialogListener editDialogListener;
12  
13     private static final String ARGS_ID = "args_id";
14     private static final String ARGS_PEMBELIAN = "args_pembelian";
15     private static final String ARGS_NOMINAL = "args_nominal";
16  
17     private long mId;
18     private String mPembelian;
19     private int mNominal;
20  
21     public EditDialogFragment() {
22     }
23  
24     @Override
25     public void onAttach(Context context) {
26         super.onAttach(context);
27         editDialogListener = (EditDialogListener) context;
28     }
29  
30     public static EditDialogFragment newInstance(long id, String pembelian, int nominal) {
31         EditDialogFragment editDialogFragment = new EditDialogFragment();
32         Bundle args = new Bundle();
33         args.putLong(ARGS_ID, id);
34         args.putString(ARGS_PEMBELIAN, pembelian);
35         args.putInt(ARGS_NOMINAL, nominal);
36         editDialogFragment.setArguments(args);
37         return editDialogFragment;
38     }
39  
40     @Override
41     public void onCreate(@Nullable Bundle savedInstanceState) {
42         super.onCreate(savedInstanceState);
43         setStyle(DialogFragment.STYLE_NORMAL, R.style.Theme_AppCompat_Light_Dialog_Alert);
44  
45         if (getArguments() != null){
46             mId = getArguments().getLong(ARGS_ID);
47             mPembelian = getArguments().getString(ARGS_PEMBELIAN);
48             mNominal = getArguments().getInt(ARGS_NOMINAL);
49         }
50     }
51  
52     @Nullable
53     @Override

https://farizdotid.com/crud-sqlite-android-studio/ 10/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
54     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @
55         View view = inflater.inflate(R.layout.fragment_dialog_edit, container);
56         unbinder = ButterKnife.bind(this, view);
57         return view;
58     }
59  
60     @Override
61     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
62         super.onViewCreated(view, savedInstanceState);
63  
64         etPembelian.setText(mPembelian);
65         etNominal.setText(String.valueOf(mNominal));
66  
67         btnSimpan.setOnClickListener(new View.OnClickListener() {
68             @Override
69             public void onClick(View v) {
70                 String pembelian = etPembelian.getText().toString();
71                 String nominal = etNominal.getText().toString();
72  
73                 /*
74                 Fungsi ini iuntuk mengirim data berupa id, pembelian, dan nominal ke
75                 activity/fragment yang di implementasinya.
76                  */
77                 editDialogListener.requestUpdate(mId, pembelian, Integer.parseInt(nominal));
78                 getDialog().dismiss();
79             }
80         });
81     }
82  
83     @Override
84     public void onDestroyView() {
85         super.onDestroyView();
86         unbinder.unbind();
87     }
88  
89     /*
90     Interface EditDialogListener ini untuk digunakan dalam class yang kita implement nantinya.
91     EditDialogListener ini berisi fungsi requestUpdate dengan parameter id, pembelian, nominal.
92     Nah nantinya data yang ada di EditDialogFragment ini kita akan parsing ke activity/frgament
93     diimplementnya.
94  
95     Sebagai contoh : Dari edit dialog ini user meng-inputkan pembelian "Baju Supreme" dan nomin
96     "5000", maka si activity/fragment implementnya akan menerima data tersebut. Data tersebut n
97     kita akan olah sesuai dengan kebtuuhan.
98      */
99     public interface EditDialogListener {
100         void requestUpdate(long id, String pembelian, int nominal);
101     }
102 }

Buat class adapter pengeluaran


Pada package home buatlah sebuah class adapter dengan nama PengeluaranAdapter. Untuk kodenya
seperti ini :

1 public class PengeluaranAdapter extends


2         RecyclerView.Adapter<PengeluaranAdapter.ViewHolder> {
3  
4     private static final String TAG = PengeluaranAdapter.class.getSimpleName();
5  
6     private List<TblPengeluaran> list;
7     private PengeluaranAdapterCallback mAdapterCallback;
8  
9     public PengeluaranAdapter(List<TblPengeluaran> list, PengeluaranAdapterCallback adapterCallb
10         this.list = list;
11         this.mAdapterCallback = adapterCallback;
12     }
13  

https://farizdotid.com/crud-sqlite-android-studio/ 11/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
14     @Override
15     public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
16         View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_pengeluaran,
17                 parent, false);
18         return new ViewHolder(view);
19     }
20  
21     @Override
22     public void onBindViewHolder(ViewHolder holder, int position) {
23         TblPengeluaran item = list.get(position);
24  
25         String pengeluaran = item.getPengeluaran();
26         int nominal = item.getNominal();
27  
28         holder.tvPengeluaran.setText(pengeluaran);
29  
30         Locale localeID = new Locale("in", "ID");
31         NumberFormat formatRupiah = NumberFormat.getCurrencyInstance(localeID);
32         holder.tvNominal.setText(formatRupiah.format(nominal));
33     }
34  
35     @Override
36     public int getItemCount() {
37         return list.size();
38     }
39  
40     public void clear() {
41         int size = this.list.size();
42         this.list.clear();
43         notifyItemRangeRemoved(0, size);
44     }
45  
46     public class ViewHolder extends RecyclerView.ViewHolder {
47  
48         @BindView(R.id.tvPengeluaran)
49         TextView tvPengeluaran;
50         @BindView(R.id.tvNominal)
51         TextView tvNominal;
52         @BindView(R.id.ivDelete)
53         ImageView ivDelete;
54  
55         public ViewHolder(View itemView) {
56             super(itemView);
57             ButterKnife.bind(this, itemView);
58  
59             ivDelete.setOnClickListener(new View.OnClickListener() {
60                 @Override
61                 public void onClick(View v) {
62                     mAdapterCallback.onDelete(getAdapterPosition());
63                 }
64             });
65  
66             itemView.setOnLongClickListener(new View.OnLongClickListener() {
67                 @Override
68                 public boolean onLongClick(View v) {
69                     mAdapterCallback.onLongClick(getAdapterPosition());
70                     return true;
71                 }
72             });
73         }
74     }
75  
76     public interface PengeluaranAdapterCallback {
77         void onLongClick(int position);
78         void onDelete(int position);
79     }
80 }

Jika masih ada error pada bagian layout dan beberapa komponen widgetnya itu karena kita belum
membuat le layout untuk kebutuhan adapternya. Buatlah sebuah layout baru dengan nama

https://farizdotid.com/crud-sqlite-android-studio/ 12/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

item_pengeluaran lalu isi dengan kode berikut :

1 <?xml version="1.0" encoding="utf-8"?>


2 <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
3     android:layout_width="match_parent"
4     android:layout_height="wrap_content"
5     xmlns:app="http://schemas.android.com/apk/res-auto"
6     xmlns:tools="http://schemas.android.com/tools"
7     app:contentPadding="8dp"
8     app:cardCornerRadius="4dp"
9     android:layout_marginBottom="8dp"
10     android:elevation="4dp">
11  
12     <RelativeLayout
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content">
15  
16         <TextView
17             android:id="@+id/tvPengeluaran"
18             android:layout_width="match_parent"
19             android:layout_height="wrap_content"
20             android:layout_toStartOf="@+id/tvNominal"
21             android:layout_marginEnd="16dp"
22             tools:text="@string/title_pengeluaran"
23             android:textSize="16sp"
24             android:fontFamily="@font/notosans_regular"
25             android:layout_centerVertical="true"
26             android:textColor="@color/secondary_text"/>
27  
28         <TextView
29             android:id="@+id/tvNominal"
30             android:layout_width="wrap_content"
31             android:layout_height="wrap_content"
32             android:layout_alignParentEnd="true"
33             android:layout_marginTop="8dp"
34             android:layout_below="@id/tvPengeluaran"
35             tools:text="Rp.500.000,0"
36             android:textSize="16sp"
37             android:fontFamily="@font/notosans_bold"
38             android:layout_gravity="start|center_vertical"
39             android:textColor="@color/colorPrimaryDark"/>
40  
41         <ImageView
42             android:id="@+id/ivDelete"
43             android:layout_width="wrap_content"
44             android:layout_height="wrap_content"
45             app:srcCompat="@drawable/ic_delete_forever"
46             android:layout_alignParentEnd="true"
47             android:tint="@android:color/darker_gray"
48             tools:ignore="ContentDescription" />
49     </RelativeLayout>
50  
51 </android.support.v7.widget.CardView>

Layout activity main


Pada layout activity_main isi dengan widget berikut :

1 <?xml version="1.0" encoding="utf-8"?>


2 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/r
3     xmlns:app="http://schemas.android.com/apk/res-auto"
4     xmlns:tools="http://schemas.android.com/tools"
5     android:layout_width="match_parent"
6     android:layout_height="match_parent"
7     tools:context=".home.HomeActivity">
8  
9     <android.support.design.widget.AppBarLayout
10         android:layout_width="match_parent"

https://farizdotid.com/crud-sqlite-android-studio/ 13/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
11         android:layout_height="wrap_content"
12         android:theme="@style/AppTheme.AppBarOverlay">
13  
14         <android.support.v7.widget.Toolbar
15             android:id="@+id/toolbar"
16             android:layout_width="match_parent"
17             android:layout_height="?attr/actionBarSize"
18             android:background="?attr/colorPrimary"
19             app:popupTheme="@style/AppTheme.PopupOverlay" />
20  
21     </android.support.design.widget.AppBarLayout>
22  
23     <include layout="@layout/content_main" />
24  
25     <android.support.design.widget.FloatingActionButton
26         android:id="@+id/fabAdd"
27         android:layout_width="wrap_content"
28         android:layout_height="wrap_content"
29         android:layout_gravity="bottom|end"
30         android:layout_margin="@dimen/fab_margin"
31         app:srcCompat="@drawable/ic_add" />
32  
33 </android.support.design.widget.CoordinatorLayout>

Persiapan home activity


Pada class HomeActivity isi dengan kode berikut :

1 public class HomeActivity extends AppCompatActivity


2         implements PengeluaranAdapter.PengeluaranAdapterCallback,
3         EditDialogFragment.EditDialogListener {
4  
5     @BindView(R.id.toolbar)
6     Toolbar toolbar;
7     @BindView(R.id.rvNote)
8     RecyclerView rvNote;
9     @BindView(R.id.fabAdd)
10     FloatingActionButton fabAdd;
11     @BindView(R.id.tvTotal)
12     TextView tvTotal;
13  
14     private DaoSession daoSession;
15     private PengeluaranAdapter pengeluaranAdapter;
16  
17     private List<TblPengeluaran> tblPengeluaranList;
18  
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_main);
23  
24         ButterKnife.bind(this);
25         daoSession = DaoHandler.getInstance(this);
26         setSupportActionBar(toolbar);
27  
28         /*
29         Fungi untuk READ data dari database. Contoh disini memanggil data yang berada dalam
30         tabel TblPengeluaran.
31          */
32         tblPengeluaranList = daoSession.getTblPengeluaranDao().queryBuilder().list();
33         pengeluaranAdapter = new PengeluaranAdapter(tblPengeluaranList, this);
34         rvNote.setLayoutManager(new LinearLayoutManager(this));
35         rvNote.setItemAnimator(new DefaultItemAnimator());
36         rvNote.setAdapter(pengeluaranAdapter);
37         pengeluaranAdapter.notifyDataSetChanged();
38  
39         tvTotal.setText(FunctionHelper.convertRupiah(getTotal()));
40  
41         fabAdd.setOnClickListener(new View.OnClickListener() {

https://farizdotid.com/crud-sqlite-android-studio/ 14/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
42             @Override
43             public void onClick(View view) {
44                 startActivity(new Intent(HomeActivity.this, CreateActivity.class));
45             }
46         });
47     }
48  
49     /*
50     Fungsi untuk mengirim data dari adapter ke edit dialog.
51     Disini memanggil EditDialogFragment dengan parameter id, pembelian, dan nominal.
52      */
53     @Override
54     public void onLongClick(int position) {
55         long id = tblPengeluaranList.get(position).getIdTblPengeluaran();
56         String pembelian = tblPengeluaranList.get(position).getPengeluaran();
57         int nominal = tblPengeluaranList.get(position).getNominal();
58  
59         FragmentManager fm = getSupportFragmentManager();
60         EditDialogFragment editDialogFragment = EditDialogFragment.newInstance(id, pembelian, n
61         editDialogFragment.show(fm, "dialog_edit");
62     }
63  
64     /*
65     Fungsi delete data. Sebelum menghapus data ada semacam popup terlebih dahulu agar meyakinka
66      */
67     @Override
68     public void onDelete(int position) {
69         String name = tblPengeluaranList.get(position).getPengeluaran();
70         showDialogDelete(position, name);
71     }
72  
73     /*
74     Fungsi untuk men-totalkan semua nominal yang ada didalam tabel TblPengeluaran.
75      */
76     private int getTotal(){
77         int total = 0;
78         for (int i = 0; i < tblPengeluaranList.size(); i++){
79             int nominal = tblPengeluaranList.get(i).getNominal();
80             total = total + nominal;
81         }
82         return total;
83     }
84  
85     /*
86     Fungsi untuk memanggil Alert Dialog. Alert dialog ini berfungsi untuk meyakinkan user kemba
87     apakah datanya ingin dihapus atau tidak.
88      */
89     private void showDialogDelete(final int position, String name){
90         AlertDialog.Builder builder1 = new AlertDialog.Builder(HomeActivity.this);
91         builder1.setMessage("Yakin untuk menghapus item "+ name + " ?");
92         builder1.setCancelable(true);
93  
94         builder1.setPositiveButton(
95                 "Ya",
96                 new DialogInterface.OnClickListener() {
97                     public void onClick(DialogInterface dialog, int id) {
98                         /*
99                         Fungsi delete suatu data bedasarkan idnya.
100                          */
101                         long idTbl = tblPengeluaranList.get(position).getIdTblPengeluaran();
102                         daoSession.getTblPengeluaranDao().deleteByKey(idTbl);
103  
104                         tblPengeluaranList.remove(position);
105                         pengeluaranAdapter.notifyItemRemoved(position);
106                         pengeluaranAdapter.notifyItemRangeChanged(position, tblPengeluaranList.
107  
108                         tvTotal.setText(FunctionHelper.convertRupiah(getTotal()));
109  
110                         dialog.dismiss();
111                     }
112                 });
113  
114         builder1.setNegativeButton(
https://farizdotid.com/crud-sqlite-android-studio/ 15/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio
115                 "Tidak",
116                 new DialogInterface.OnClickListener() {
117                     public void onClick(DialogInterface dialog, int id) {
118                         dialog.cancel();
119                     }
120                 });
121  
122         AlertDialog alert11 = builder1.create();
123         alert11.show();
124     }
125  
126     /*
127     Fungsi ini untuk menerima data yang dikirimkan dari EditDialogFragment ke HomeActivity.
128     Data yang dikirimkan dari EditDialogFragment ini ada id, pembelian, dan nominal. Lalu
129     setelah mendapatkan datanya panggil fungsi update dari Greendao.
130      */
131     @Override
132     public void requestUpdate(long id, String pembelian, int nominal) {
133         TblPengeluaran tblPengeluaran = daoSession.getTblPengeluaranDao().load(id);
134         tblPengeluaran.setPengeluaran(pembelian);
135         tblPengeluaran.setNominal(nominal);
136         daoSession.getTblPengeluaranDao().update(tblPengeluaran);
137  
138         pengeluaranAdapter.notifyDataSetChanged();
139         tvTotal.setText(FunctionHelper.convertRupiah(getTotal()));
140     }
141 }

Run application
Silahkan jalankan aplikasi.

Screenshot Aplikasi

https://farizdotid.com/crud-sqlite-android-studio/ 16/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

   

   

https://farizdotid.com/crud-sqlite-android-studio/ 17/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

Baca Tutorial Pemrograman Android lainnya :

Cara Menambahkan dan Menggunakan Library Butterknife

Cara Membuat Template RecyclerView Adapter

Cara Membuat Listener di Adapter RecyclerView Android

Download Project Cara Membuat CRUD SQLite Database


Android Studio

https://farizdotid.com/crud-sqlite-android-studio/ 18/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

Sekian artikel Tutorial Pemrograman Android mengenai Cara Membuat CRUD SQLite Database
Android Studio. Semoga bermanfaat

Categories: PEMROGRAMAN ANDROID

Tags: Android Cara Membuat Aplikasi Android Pemrograman Android

  

farizdotid
Seorang manusia biasa yang mempunyai fokus ke bidang pemrograman android dan ngeblog mengenai teknologi.

5 Comments

vanz · May 18, 2019 at 2:43 pm

@BindView(R.id.rvNote)
@BindView(R.id.tvTotal)

Maaf mau tanya, untuk pengamblilan id rvNote sama rvTotal itu dari mana?

 REPLY

farizdotid · May 19, 2019 at 10:43 am

Itu dari layoutnya gan. Di layout xmlnya kan kita de ne idnya, nah dari situ gan.

 REPLY

umar · August 6, 2019 at 9:54 am

pak kenapa pada saat sync terjadi ERROR: Could not nd method greendao() for arguments
[build_cazks09rxam0pyyl5ap9d46lp$_run_closure3@215bf7eb] on project ‘:app’ of type
org.gradle.api.Project.
https://farizdotid.com/crud-sqlite-android-studio/ 19/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

 REPLY

farizdotid · August 6, 2019 at 2:34 pm

Sudah benar untuk membuat le tabelnya mas?

 REPLY

Cara Membuat Fungsi Open Whatsapp di Aplikasi Android · June 4, 2019 at 4:32 pm

[…] Cara Membuat CRUD SQLite Database Android Studio […]

 REPLY

Leave a Reply

Name *

Email *

Website

What's on your mind?

POST COMMENT

Con rm you are NOT a spammer

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Tutorial Android Terbaru

Cara Membuat Aplikasi Scan QR Code Android

Cara Membuat Text Bold, Italic, Underline di strings.xml

Cara Membuat Fungsi Open Whatsapp di Aplikasi Android

https://farizdotid.com/crud-sqlite-android-studio/ 20/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

Cara Membuat CRUD SQLite Database Android Studio

Cara Membuat Template RecyclerView Adapter

Cara Membuat API Login Register Dengan SLIM Framework

Cara Membuat Custom Font Pada Aplikasi Android

Cara Menambahkan Loading di Glide Android

Komentar Developer

farizdotid on Tutorial Login dan Register Menggunakan Retro t2 dan API Server

ds on Tutorial Login dan Register Menggunakan Retro t2 dan API Server

farizdotid on Request Tutorial Pemrograman Android

Cara Membuat Text Bold, Italic, Underline di strings.xml on Cara Membuat Custom Font Pada Aplikasi

Android

Cara Membuat Text Bold, Italic, Underline di strings.xml on Cara Menambahkan Loading di Glide Android

Related Posts

https://farizdotid.com/crud-sqlite-android-studio/ 21/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

PEMROGRAMAN ANDROID

Cara Membuat Aplikasi Scan QR Code Android


Tutorial pemrograman android kali ini mengenai bagaimana cara membuat aplikasi scan QR Code android
dengan menggunakan custom layout. Seperti kita ketahui QR Code ini biasanya banyak dijumpai di
supermarket ataupun untuk jaman sekarang absensi sekolah Read more…

https://farizdotid.com/crud-sqlite-android-studio/ 22/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

PEMROGRAMAN ANDROID

Cara Membuat Text Bold, Italic, Underline di strings.xml


Pada tutorial pemrograman android kali ini kita akan belajar mengenai cara membuat text bold, italic, dan
underline pada strings.xml. Sebenarnya ada banyak cara untuk memenuhi kebutuhan bold, italic, dan
underline ini. Bisa melalui xmlnya langsung Read more…

https://farizdotid.com/crud-sqlite-android-studio/ 23/24
04/09/2019 Cara Membuat CRUD SQLite Database Android Studio

PEMROGRAMAN ANDROID

Cara Membuat Fungsi Open Whatsapp di Aplikasi Android


Cara Membuat Fungsi Open Whatsapp di Aplikasi Android – Halo devandro! Tutorial pemrograman android
kali ini mengenai “Cara Membuat Fungsi Open Whatsapp” pada aplikasi android kamu. Maksud dari tutorial
pemrograman android ini adalah ketika kamu Read more…

ABOUT PORTFOLIO PRIVACY POLICY TERM OF USE SITEMAP JASA KONSULTASI

LOWONGAN KERJA IT

Hestia | Developed by ThemeIsle

https://farizdotid.com/crud-sqlite-android-studio/ 24/24

Anda mungkin juga menyukai