Belajar Menggunakan Layout Inflater di Android Studio

Belajar Menggunakan Layout Inflater di Android Studio


Assalamualaikum Warahmatullahi Wabarakatuh.

Di kesempatan kali ini, saya akan mengajarkan pada kalian Cara Menggunakan Layout Inflater di Android Studio, Layout inflanter adalah sebuah class yang bisa kita gunakan untuk membuat java object view dari layout yang kita buat di xml. Layout Inflater digunakan jika kita ingin membuat sebuah sub activity, jika kita gambarkan, fungsinya hampir sama seperti fragment, yaitu bagian kecil dari Activity.

Belajar Menggunakan Layout Inflater di Android Studio

Pada tutorial ini kita akan belajar untuk memahami penggunaan dari layout inflater dan juga contoh penerapannya pada Aplikasi Android.

Materi lainnya yang direkomendasikan:

Sudah saya jelaskan tadi, Layout Inflater digunakan untuk menghubungkan MainActivity (Activity Utama) dengan Sub Actuvuty, yaitu bagian kecil dari Activity. Jika kita gambarkan, kalian bisa melihatnya seperti berikut ini.
Gambaran Dari Konsep Layout Inflater

Layout Inflater digunakan jika kita ingin menambahkan layout tambahan pada ActivityMain kita, pada gambar diatas, kita menambahkan 2 buah layout tambahan pada MainActivity. Untuk penjelasan lebih lanjutnya, mari kita simak tutorial berikut ini.

Belajar Menggunakan Layout Inflater di Android Studio

1) Buka aplikasi Android Studio kalian, Buat Project Baru. Disini kita akan membuat 3 buah layout activity, yaitu 1 buah MainActivity (Activity Utama) dan 2 buah SubActivity (Activity Tambahan).

2) Kita akan membuat SubActivitynya terlebih dahulu, pada SubActivity yang pertama ini, kita akan menambahkan ImageView didalamnya, kalian dapat menyiapkan Gambarnya sendiri.

Buat Activity baru, klik kalan pada direktori layout > New Layout resource file, berinama "sub1_activity", masukan kode xmlnya seperti berikut ini:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:gravity="center"
        android:text="Ini Sub Activiy 1"
        android:textColor="#FF001BAF"
        android:textSize="16sp"
        android:textStyle="bold" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="215dp"
        app:srcCompat="@drawable/gambar_saya" />
</LinearLayout>

View:

Screenshot_sub1Activity layout

3) Selanjutnya buat SubAcivity yang ke dua, berinama "sub2_activity", didialamnya akan kita tambahkan Beberapa TextView, sebagai komponen pendukung.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:gravity="center"
        android:text="Ini Sub Activiy 2"
        android:textColor="#FFD30000"
        android:textSize="16sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Nama : WIldan Muhammad A" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Jurusan : Teknik Informatika" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Job : Android Developer" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Universitas : UNPI Cianjur" />

</LinearLayout>

View:

Screenshot_sub2Activity layout

4) Selanjutnya, buka activity_main.xml kalian, disini kita akan menambahkan 1 buah Container, yaitu LinearLayout. LinerLayout tersebut digunakan sebagai wadah untuk menampilkan activity tambahan yang sudah kita buat tadi.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:layout_margin="8dp"
    android:orientation="vertical"
    android:background="#FFF5F5F5"
    tools:context="android.cianjur.developer.net.basicandroid.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:gravity="center"
        android:text="Activity Utama"
        android:textColor="#000000"
        android:textSize="16sp"
        android:textStyle="bold" />

    <LinearLayout
        android:id="@+id/konten_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:orientation="vertical">
        
    </LinearLayout>

</LinearLayout>

5) Berikutnya buka MainActivity, pada source code berikut ini, kita akan menggunakan class Layout Inflater, untuk membuat objek view dari layou yang sudah kita buat, lalu menampilkannya pada LinearLayout.

package android.cianjur.developer.net.basicandroid;

/*
 Dibuat Oleh WILDAN M ATHOILLAH
 */

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity{

    //Mendefinisikan Variable LinearLayout, Digunakan sebagai Container/Penampung
    private LinearLayout KontenView;

    //Mendefinisikan View, digunakan untuk SubActivity
    private View Sub1Activity,Sub2Activity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        KontenView = findViewById(R.id.konten_view);

        //Menentukan Layout Resource dan ViewGroup yang akan kita gunakan
        Sub1Activity = getLayoutInflater().inflate(R.layout.sub1_activity, KontenView, false);
        Sub2Activity = getLayoutInflater().inflate(R.layout.sub2_activity, KontenView, false);
        
        //Menampilkan View pada LinearLayout
        KontenView.addView(Sub1Activity);
        KontenView.addView(Sub2Activity);
    }
}

Demo:

Screenshot_Layout Inflater Example

Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Memahami Penggunaan ArrayAdapter di Android Studio

Memahami Penggunaan ArrayAdapter di Android Studio


Assalamualaikum Warahmatullahi Wabarakatuh.

Pada tutorial ini kita akan belajar Penggunaan ArrayAdapter pada Android Studio, ArrayAdapter berfungsi untuk mengatur konten yang akan ditmpilkan pada View, ArrayAdapter pada umunya digunakan untuk mengatur konten yang akan ditampilkan pada ListView atau RecyclerView, data yang akan ditampilkan tersebut, tersimpan didalam ArrayList, jadi ArrayAdapter menerima data dari ArrayList, lalu menampilkannya pada ListView atau RecyclerView.

Memahami Penggunaan ArrayAdapter di Android Studio

Pada materi ini, kita akan belajar membuat program dengan menggunakan ArrayAdapter, untuk tutorial dasar ini, kita akan mencoba mengimplementasikan ArrayAdapter tersebut pada ListView.

Pada program aplikasi yang akan kita buat, user diharuskan untuk menginputkan data, dimana data yang diinputkan tadi akan ditampilkan pada ListView.

Materi-materi yang akan kita pelajari adalah :

  • Memahami Konsep ArrayAdapter
  • Kapan Menggunakan ArrayAdapter 
  • Contoh Penerapan ArrayAdapter pada ListView


Materi lainnya yang direkomendasikan:

Memahami Penggunaan ArrayAdapter di Android Studio

1) Buka aplikasi Android Studio kalian, Buat Project Baru.

2) Selanjutnya kita akan membuat desain layout pada activity_main,xml, disini kita akan menambahkan beberapa komponen seperti Edittext, Button, ListViw, TextView dan juga ScrollView.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:layout_margin="8dp"
    android:orientation="vertical"
    android:background="#FFF5F5F5"
    tools:context="android.cianjur.developer.net.basicandroid.MainActivity">

    <EditText
        android:id="@+id/input_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Masukan Data"
        android:inputType="textPersonName" />

    <Button
        android:id="@+id/save_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Simpan Data" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:gravity="center"
        android:text="Daftar/List Data"
        android:textStyle="bold" />

    <ListView
        android:id="@+id/list_data"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

View:

Layout Design ArrayAdapter example

3) Membuat Class yang memiliki fungsi/method Getter dan Setter, class ini digunakan untuk menset konten dan mengembalikan nilai dari konten tersebut.

Buat Class baru, berimana class tersebut, misalnya "konten".

package android.cianjur.developer.net.basicandroid;

public class konten {
    
    private String data;

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
    
    public String toString(){
        return (getData());
    }
}

4) Buka file MainActiviy.java pada project kalian, disini kita akan menginisialisasi ArrayList dan juga ArrayAdapter dengan parameter konten (yaitu class Getter dan Setter). Lalu kita implementasikan adapter tersebut pada ListView.

package android.cianjur.developer.net.basicandroid;

/*
 Dibuat Oleh WILDAN M ATHOILLAH
 */

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

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

public class MainActivity extends AppCompatActivity{

    ///Inisialisasi ArrayList
    private List kontenList = new ArrayList<>();
    //Inisialisasi ArrayAdapter
    private ArrayAdapter adapter = null;
    //Inisialisasi Variable ListVIew
    private ListView listView;

    //Inisialisasi Komponen2 Pendukung
    private EditText InputData;
    private Button SaveData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = findViewById(R.id.list_data);
        InputData = findViewById(R.id.input_data);
        SaveData = findViewById(R.id.save_data);

        //Mengatur ArrayAdapter untuk listView
        adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, kontenList);
        listView.setAdapter(adapter);

        SaveData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Menambahkan Konten yang akan ditampilkan pada ListView
                konten myKonten = new konten();
                myKonten.setData(InputData.getText().toString());
                adapter.add(myKonten);
                Toast.makeText(getApplicationContext(),"Data Tersimpan", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

Untuk menambahkan konten pada ListView, kita dapat menggunakan method setData() yang terdapat didalam class konten, lalu mengembalikan nilai didalam method getData dengan menggunakan fungsi toString().

Demo:

Screenshot_ListView dengan ArrayAdapter Example

Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Belajar Membuat Aplikasi CRUD SQLite Database di Android Studio

Belajar Membuat Aplikasi CRUD SQLite Database di Android Studio


Assalamualaikum Warahmatullahi Wabarakatuh.

Pada meteri kali ini, saya akan menjelaskan tahap-tahap cara pembuatan aplikasi CRUD menggunakan SQLite Database. Aplikasi CRUD pastinya sudah tidak asing lagi bagi seorang programmer, selain SQLite, banyak sekali Database yang bisa kita gunakan, seperti Oracle, MySQL, Firebase, dll.

SQLite Database adalah sistem manajemen basisdata relasional yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. SQLite bukan program client-server, melainkan berupa file tunggal atau beberapa file saja. SQLite penggunaannya sangat simple dan mudah dikelola, karena berdiri sendiri didalam aplikasi.

Belajar Membuat Aplikasi CRUD SQLite Database di Android Studio

Ada banyak sekali keunggulan pada SQLite Database, berikut ini beberapa keunggulan dari SQLite:

1.Sangat Stabil

SQLite secara aktif dikembangkan oleh beberapa software engineer yang handal. Dalam waktu beberapa bulan, SQLite sering dirilis. Banyak fitur yang telah ditambahkan. Salah satunya fitur dukungan untuk data JSON melalui ekstensi json1. Selain itu, SQLite juga merilis versi perbaikan dari pencarian teks lengkap, yang meliputi hasil pemeringkatan dengan menggunakan algoritma BM25. Pada SQLite juga jarang sekali ditemukan bug didalamnya.

2.Mudah Dikelola


SQLite mudah dikelola karena SQLite merupakan file tunggal (atau beberapa file saja dengan tambahan log transaksi). Dibandingkan dengan database lainnya, SQLite tidak membutuhkan konfigurasi yang banyak da format filenya juga stabil di versi utama.

3.Mode WAL

Mode WAL pertama kali diperkenalkan pada SQLite 3.7.0. Fitur ini digunakan untuk mengatasi kongkurensi dimana aktivitas membaca dan menulis data bisa dilakukan secara bersamaan. Fitur ini sangat berguna jika menggunakan banyak proses yan berkaitan dengan Database

4.Bisa Diperluas

SQLite bisa diperluas dengan ekstensi dan diintegrasikan dengan API. Salah satu contohnya yaitu modul Python Pysqlite yang menjadi driver untuk SQLite. Ada juga modul Python Apsw yang menjadi driver alternatif SQLite. Modul Apsw menyediakan banyak API yang berguna untuk mendefinisikan fungsi kustom SQL, fungsi kolaborasi dan agregat.

5.Sangat Cepat
SQLite sangat cepat jika berjalan pada lingkup yang sama sehingga tidak ada sumber daya tambahan seperti jaringan ketika menjalankan query maupun mengambil data. SQLite benar-benar fleksibel sehingga tidak membutuhkan protokol, serialisasi ataupun komunikasi melalui socket. SQLite juga bisa berjalan pada perangkat mobile, yang kini banyak dipakai di berbagai aplikasi Android.

Kesimpulannya SQLite merupakan mesin database yang unik, fleksibel dan mudah dikelola. SQLite juga bisa menjadi alternatif yang bagus untuk database dalam pengembangan perangkat lunak android.

Dan berikut ini merupakan materi-materi yang akan saya berikan mengenai penggunaan SQLite, untuk membuat aplikasi CRDU (Create, Read, Delete dan Update) pada Android Studio.

Tutorial Untuk Membuat Aplikasi CRUD SQLite Database:

Terimakasih atas kunjungannya, Semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, jika ada yang ingin ditanyakan, silakan kontak saya atau isi komentar dibawah ini, selebihnya mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Cara Membuat Fungsi Delete dan Update pada SQLite Database

Cara Membuat Fungsi Delete dan Update pada SQLite Database


Assalamualaikum Warahmatullahi Wabarakatuh.

Pada tutorial ini, kita akan belajar Cara Membuat Fungsi Delete dan Update pada SQLite Database, tutorial ini merupakan materi lanjutan dari tutorial yang saya bahas sebelumnya, yaitu Cara Menampilka Data SQLite pada RecyclerView, jadi saya sarankan kalian sudah mengikuti dan juga membuat project tersebut sebelumnya.

Cara Membuat Fungsi Delete dan Update pada SQLite Database

Pada materi yang akan kita pelajari hari ini, kita akan belajar cara menghapus dan juga mengedit data yang tersimpan pada SQLite Database, sebelumnya kita sudah belajar cara menampilkan dat SQLite pada RecyclerView, pada tutorial ini, kita dapat menghapus dan update data tersebut melalui RecyclerView.

Untuk itu kita akan menambahkan Menu Navigasi seperti menu OverFlow pada layout/list item RecyclerView tersebut. untuk menampikan menu pilihan pada Menu Overflow, kita akan menggunakan Menu Popup untuk menampilkan menu pilihan berupa Delete dan Update pada masing-masing item.

Cara Membuat Fungsi Delete dan Update pada SQLite Database

Pertama kita perlu membuat menunya terlebih dahulu, caranya : Klik kanan pada direktori res > New > Android resource directory. lalu berinama file tersebut, misalnya "popup_menu". setelah itu klik Ok.

Selanjutnya buat menu tersebut dengan menggunakan kode xml, untuk membuatnya, kita perlu menambahkan tag <item> dan juga beberapa atribut tambahan lalinnya, seperti id, title, dsb.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/delete"
        android:title="Delete"/>

    <item android:id="@+id/update"
        android:title="Update"/>

</menu>

Buat Icon Menu Overflownya, klik kanan pada dir res > New > Image Asset.

Membuat Menu Icon Overflow

Selanjnya kita edit layout design pada RecyclerView, buka file view_design.xml, kita akan menambahkan ImgeButton sebagai menu navigasi utuk icon tersebut, kalian edit menjadi seperti berikut ini:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/item_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/image"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        app:srcCompat="@drawable/unpi" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_toLeftOf="@+id/overflow"
        android:layout_toRightOf="@+id/image"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="2dp"
            android:text="Nama"
            android:textSize="18sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/NIM"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:text="NIM"
            android:textSize="14sp" />
        
        <TextView
            android:id="@+id/jurusan"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:text="Jurusan"
            android:textSize="14sp" />
    </LinearLayout>

    <ImageButton
        android:id="@+id/overflow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:background="#FFF9F9F9"
        app:srcCompat="@drawable/ic_overflow" />

</RelativeLayout>

View:


Screenshot_Design Layout RecyclerView dengan Menu Everflow

A.Menghapus Data Dari Database

1) Buka RecyclerViewAdapter kalian, lalu tambahkan Context dan juga ImageButton didalam class ViewHolder, seperti ini:

public class RecyclerViewAdapter extends RecyclerView.Adapter{

    private ArrayList namaList; //Digunakan untuk Nama
    private ArrayList jurusanList; //Digunakan untuk Jurusan
    private ArrayList nimList; //Digunakan untuk Jurusan
    private Context context; //Membuat Variable Context

    //Membuat Konstruktor pada Class RecyclerViewAdapter
    RecyclerViewAdapter(ArrayList namaList, ArrayList jurusanList, ArrayList nimList){
        this.namaList = namaList;
        this.jurusanList = jurusanList;
        this.nimList = nimList;
    }

    //ViewHolder Digunakan Untuk Menyimpan Referensi Dari View-View
    class ViewHolder extends RecyclerView.ViewHolder{

        private TextView Nama, Jurusan, Nim;
        private ImageButton Overflow;

        ViewHolder(View itemView) {
            super(itemView);

            //Mendapatkan Context dari itemView yang terhubung dengan Activity ViewData
            context = itemView.getContext();

            //Menginisialisasi View-View untuk kita gunakan pada RecyclerView
            Nama = itemView.findViewById(R.id.name);
            Jurusan = itemView.findViewById(R.id.jurusan);
            Overflow = itemView.findViewById(R.id.overflow);
            Nim = itemView.findViewById(R.id.NIM);
        }
    }

2) Lalu didalam method onBindViewHoler(), tambahkan onClickListener pada ImageButton tersebut, didalamnya akan kita tambahkan Popup menu pada onClicListener tersebut, seperti berikut ini:

public void onBindViewHolder(final ViewHolder holder, @SuppressLint("RecyclerView") final int position) {
        //Memanggil Nilai/Value Pada View-View Yang Telah Dibuat pada Posisi Tertentu
        final String Nama = namaList.get(position);//Mengambil data (Nama) sesuai dengan posisi yang telah ditentukan
        final String Jurusan = jurusanList.get(position);//Mengambil data (Jurusan) sesuai dengan posisi yang telah ditentukan
        final String NIM = nimList.get(position);//Mengambil data (NIM) sesuai dengan posisi yang telah ditentukan
        holder.Nama.setText(Nama);
        holder.Jurusan.setText(Jurusan);
        holder.Nim.setText(NIM);

        //Mengimplementasikan Menu Popup pada Overflow (ImageButton)
        holder.Overflow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View view) {
                //Membuat Instance/Objek dari PopupMenu
                PopupMenu popupMenu = new PopupMenu(view.getContext(), view);
                popupMenu.inflate(R.menu.popup_menu);
                popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                        switch (item.getItemId()){
                            case R.id.delete:
                                //Menghapus Data Dari Database
                                DBMahasiswa getDatabase = new DBMahasiswa(view.getContext());
                                SQLiteDatabase DeleteData = getDatabase.getWritableDatabase();
                                //Menentukan di mana bagian kueri yang akan dipilih
                                String selection = DBMahasiswa.MyColumns.NIM + " LIKE ?";
                                //Menentukan Nama Dari Data Yang Ingin Dihapus
                                String[] selectionArgs = {holder.Nim.getText().toString()};
                                DeleteData.delete(DBMahasiswa.MyColumns.NamaTabel, selection, selectionArgs);

                                //Menghapus Data pada List dari Posisi Tertentu
                                int position = nimList.indexOf(NIM);
                                nimList.remove(position);
                                notifyItemRemoved(position);
                                Toast.makeText(view.getContext(),"Data Dihapus",Toast.LENGTH_SHORT).show();
                                break;
                                
                            case R.id.update:
                                //Statement Update
                                break;
                        }
                        return true;
                    }
                });
                popupMenu.show();
            }
        });
    }

Penjelasan:

Pada menu overflow yang sudah kita buat tadi sebelumnya, menggunakan ImageButton, saat menu tersebut diklik, maka akan muncul 2 buah menu Popup, yaitu Delete dan Update.

Untuk menghapus Data dari Database SQLite, pertama kita hapus membuat Instance/Objek dan juga context dengan class database kita, yaitu DBMahasiswa, dengan parameter view.getContext().

Pada variable selection, kita menentukan Bagian Nama Query yang akan dipilih, pada contoh tersebut kita memilih Kolom NIM, sebagai acuan untuk menghapus data. Jadi artinya, kita dapat menghapus salah satu data dari database berdasarkan NIM item yang dipilih.

Pada variable Array selectionArgs, digunakan untuk menentukan NIM dari Data yang akan dihapus, NIM tersebut didapat dari masing-masing item, terdantung posisinya. Jadi kita dapat menghapus data tersebut berdasarkan NIM pada item didalam RecyclerView.

Dan yang terakhir, digunakan untuk menghapus Item dari RecyclerView, supaya saat kita mengklik menu Delete, maka secara realtime item yang kita pilih pada RecyclerView akan menghilang.

Demo:


Screenshot1 Delete Data dari Database Screenshot2 Delete Data dari Database

B.Mengedit Data Dari Database

1) Pertama kita akan membuat Activity baru, berinama "UpdateActivity", activity tersebut akan kita gunakan untuk mengedit data dari Database, disini kita hanya akan mengupdate atau mengubah Nama, NIM dan Jurusan pada setiap Item yang dipilih.

Untuk itu kalian buat activitynya seperti berikut ini:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:layout_margin="8dp"
    android:orientation="vertical"
    tools:context="android.cianjur.developer.net.sqliteexample.UpdateActivity">

    <EditText
        android:id="@+id/new_nim"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="NIM Baru"
        android:inputType="textPersonName" />

    <EditText
        android:id="@+id/new_nama"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Nama Baru"
        android:inputType="textPersonName" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:text="Fakultas/Jurusan:" />

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/new_jurusan"
        android:entries="@array/daftar_jurusan"
        android:padding="15dp">

    </Spinner>

    <Button
        android:id="@+id/new_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Simpan Data Baru" />
</LinearLayout>

View:

Update Activity

2) Buka kembali RecyclerViewAdapter, tambahkan baris kode berikut ini pada Item didalam Popup menu:

case R.id.update:
   Intent dataForm = new Intent(view.getContext(), UpdateActivity.class);
   dataForm.putExtra("SendNIM", holder.Nim.getText().toString());
   context.startActivity(dataForm);
   ((Activity)context).finish();
   break;

Disana kita menggunakan Intent untuk berpindah activity, serta Mempassing/Kirim Data, NIM pada activity selanjutnya, untuk kita kirim pada ActivityUpdate, NIM tersebut digunakan untuk menentukan Data mana yang ingin di Update.

Lalu kita panggil variable context yang sudah kita buat tadi sebelumnya, untuk mengeksekusi Intent tersebut.

3) Buka file UpdateActivity.java, masukan source code berikut ini:

package android.cianjur.developer.net.sqliteexample;

import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

public class UpdateActivity extends AppCompatActivity {

    private DBMahasiswa MyDatabase;
    private EditText NewNIM, NewNama;
    private Spinner NewJurusan;
    private String getNewNIM, getNewNama, getNewJurusan;
    private Button Update;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_update);
        getSupportActionBar().setTitle("Masukan Data Baru");
        MyDatabase = new DBMahasiswa(getBaseContext());
        NewNIM = findViewById(R.id.new_nim);
        NewNama = findViewById(R.id.new_nama);
        NewJurusan = findViewById(R.id.new_jurusan);
        Update = findViewById(R.id.new_data);
        Update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setUpdateData();
                startActivity(new Intent(UpdateActivity.this, ViewData.class));
                finish();
            }
        });
    }

    private void setUpdateData(){
        getNewNIM = NewNIM.getText().toString();
        getNewNama = NewNama.getText().toString();
        getNewJurusan = NewJurusan.getSelectedItem().toString();

        //Menerima Data NIM yang telah dipilih Oleh User untuk diposes
        String GetNIM = getIntent().getExtras().getString("SendNIM");

        SQLiteDatabase database = MyDatabase.getReadableDatabase();

        //Memasukan Data baru pada 3 kolom (NIM, Nama dan Jurusan)
        ContentValues values = new ContentValues();
        values.put(DBMahasiswa.MyColumns.Nama, getNewNama);
        values.put(DBMahasiswa.MyColumns.Jurusan, getNewJurusan);
        values.put(DBMahasiswa.MyColumns.NIM, getNewNIM);

        //Untuk Menentukan Data/Item yang ingin diubah, berdasarkan NIM
        String selection = DBMahasiswa.MyColumns.NIM + " LIKE ?";
        String[] selectionArgs = {GetNIM};
        database.update(DBMahasiswa.MyColumns.NamaTabel, values, selection, selectionArgs);
        Toast.makeText(getApplicationContext(), "Berhasil Diubah", Toast.LENGTH_SHORT).show();
    }
}

Projectnya Bisa Kalian Download di Github Saya.

Terimakasih atas kunjungannya, Semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, jika ada yang ingin ditanyakan, silakan kontak saya atau isi komentar dibawah ini, selebihnya mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Cara Menampilkan Data SQLite pada RecyclerView

Cara Menampilkan Data SQLite pada RecyclerView


Assalamualaikum Warahmatullahi Wabarakatuh.

Pada tutorial sebelumnya, kita sudah membahas Cara Menampilkan data dari Database SQLite kedalam ListView, karena ListView sudah tergantikan oleh RecyclerView, jadi pada pembahasan kali ini, kita akan belajar Cara Menampilkan Data SQLite kedalam RecyclerView, dengan menggunakan RecyclerView, kita dapat mengtur layout design pada setiap item/listnya.

Cara Menampilkan Data SQLite pada RecyclerView

Seperti biasa, kita akan melanjutkan project pada tutorial sebelumnya, agar lebih mudah, saya sarankan kalian sudah mengikuti panduan-panduan yang saya berikan beserta project yang sudah kalian buat pada tutorial sebelumnya.

Cara Menampilkan Data SQLite pada RecyclerView

Seperti pada tutorial sebelumnya, untuk mengamblil data dari SQLite Database, kita dapat menggunakan suatu Class bernama Cursor, Cursor di implementasikan sebagai Pointer atau petunjuk, yang memungkinkan kita untuk mengambil data dari Rows (Baris) pada sebuah kolom didalam SQLite Database.

1) Pertama, kalian masukan beberapa library berikut ini, pada dependencies didalam file build.gradle (didalam direktori app).

compile 'com.android.support:appcompat-v7:27.0.2'
compile 'com.android.support:design:27.0.2'
compile 'com.android.support:recyclerview-v7:27.0.2'
compile 'com.android.support:support-v4:27.0.2'

2) Pertama, yang perlu kita lakukan yaitu membuat design layout untuk setiap item didalam RecyclerView, caranya buat layout baru, berinama "view_design", pada layout tersebut kita akan menggunakan beberapa view seperti TextView dan ImageView.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/item_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/image"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        app:srcCompat="@drawable/unpi" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_toLeftOf="@+id/overflow"
        android:layout_toRightOf="@+id/image"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="2dp"
            android:text="Nama"
            android:textSize="18sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/NIM"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:text="NIM"
            android:textSize="14sp" />

        <TextView
            android:id="@+id/jurusan"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:text="Jurusan"
            android:textSize="14sp" />
    </LinearLayout>

</RelativeLayout>

View:

Screenshot_Design Layout RecyclerView

3) Selanjutnya kita akan membuat sebuah class bernama RecyclerViewAdapter, adapter tersebut akan kita gunakan untuk mengatur data model yang akan ditampilkan pada RecyclerView, buat class baru bernama RecyclerViewAdapter.

package android.cianjur.developer.net.sqliteexample;

import android.annotation.SuppressLint;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;

//Class Adapter ini Digunakan Untuk Mengatur Bagaimana Data akan Ditampilkan
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{

    private ArrayList namaList; //Digunakan untuk Nama
    private ArrayList jurusanList; //Digunakan untuk Jurusan
    private ArrayList nimList; //Digunakan untuk Jurusan

    //Membuat Konstruktor pada Class RecyclerViewAdapter
    RecyclerViewAdapter(ArrayList namaList, ArrayList jurusanList, ArrayList nimList){
        this.namaList = namaList;
        this.jurusanList = jurusanList;
        this.nimList = nimList;
    }

    //ViewHolder Digunakan Untuk Menyimpan Referensi Dari View-View
    class ViewHolder extends RecyclerView.ViewHolder{

        private TextView Nama, Jurusan, Nim;

        ViewHolder(View itemView) {
            super(itemView);
            //Menginisialisasi View-View untuk kita gunakan pada RecyclerView
            Nama = itemView.findViewById(R.id.name);
            Jurusan = itemView.findViewById(R.id.jurusan);
            Nim = itemView.findViewById(R.id.NIM);
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //Membuat View untuk Menyiapkan dan Memasang Layout yang Akan digunakan pada RecyclerView
        View V = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_design, parent, false);
        return new ViewHolder(V);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, @SuppressLint("RecyclerView") final int position) {
        //Memanggil Nilai/Value Pada View-View Yang Telah Dibuat pada Posisi Tertentu
        final String Nama = namaList.get(position);//Mengambil data (Nama) sesuai dengan posisi yang telah ditentukan
        final String Jurusan = jurusanList.get(position);//Mengambil data (Jurusan) sesuai dengan posisi yang telah ditentukan
        final String NIM = nimList.get(position);//Mengambil data (NIM) sesuai dengan posisi yang telah ditentukan
        holder.Nama.setText(Nama);
        holder.Jurusan.setText(Jurusan);
        holder.Nim.setText(NIM);
    }

    @Override
    public int getItemCount() {
        //Menghitung Ukuran/Jumlah Data Yang Akan Ditampilkan Pada RecyclerView
        return nimList.size();
    }

}

4) Klik kanan pada direkotri, pilih New > Drawable resource file, bernimana "line", file ini digunakan untuk membuat Underline pada setiap list item didalam RecyclerView.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#FFD8D8D8"/>
    <size android:height="0.5dp"/>
</shape>

5) Selanjutnya pada activity_view_data, kalian ganti Tambahkan atau ganti ListView tersebut dengn RecyclerView.

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="8dp"
    tools:context="android.cianjur.developer.net.sqliteexample.ViewData">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical">

    </android.support.v7.widget.RecyclerView>

</RelativeLayout>

6) Buka file ViewData.java, untuk source codenya, kalian bisa membuatnya seperti berikut ini:

package android.cianjur.developer.net.sqliteexample;

import android.annotation.SuppressLint;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;

public class ViewData extends AppCompatActivity {
    private DBMahasiswa MyDatabase;

    private RecyclerView recyclerView;
    private RecyclerView.Adapter adapter;
    private RecyclerView.LayoutManager layoutManager;
    private ArrayList NamaList;
    private ArrayList JurusanList;
    private ArrayList NIMList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_data);
        getSupportActionBar().setTitle("Daftar Mahasiswa");
        NamaList = new ArrayList<>();
        JurusanList = new ArrayList<>();
        NIMList = new ArrayList<>();
        MyDatabase = new DBMahasiswa(getBaseContext());
        recyclerView = findViewById(R.id.recycler);
        getData();
        //Menggunakan Layout Manager, Dan Membuat List Secara Vertical
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setHasFixedSize(true);
        adapter = new RecyclerViewAdapter(NamaList, JurusanList, NIMList);
        //Memasang Adapter pada RecyclerView
        recyclerView.setAdapter(adapter);
        //Membuat Underline pada Setiap Item Didalam List
        DividerItemDecoration itemDecoration = new DividerItemDecoration(getApplicationContext(), DividerItemDecoration.VERTICAL);
        itemDecoration.setDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.line));
        recyclerView.addItemDecoration(itemDecoration);
    }

    //Berisi Statement-Statement Untuk Mengambi Data dari Database
    @SuppressLint("Recycle")
    protected void getData(){
        //Mengambil Repository dengan Mode Membaca
        SQLiteDatabase ReadData = MyDatabase.getReadableDatabase();
        Cursor cursor = ReadData.rawQuery("SELECT * FROM "+ DBMahasiswa.MyColumns.NamaTabel,null);

        cursor.moveToFirst();//Memulai Cursor pada Posisi Awal

        //Melooping Sesuai Dengan Jumlan Data (Count) pada cursor
        for(int count=0; count < cursor.getCount(); count++){

            cursor.moveToPosition(count);//Berpindah Posisi dari no index 0 hingga no index terakhir

            NIMList.add(cursor.getString(0));//Menambil Data Dari Kolom 0 (NIM)
            NamaList.add(cursor.getString(1));//Menambil Data Dari Kolom 1 (Nama)
            JurusanList.add(cursor.getString(2));//Menambil Data Dari Kolom 2 (Jurusan)
        }
    }
}

Demo:

Screenshot_SQLite Database dengan RecyclerView Example

Projectnya Bisa Kalian Download di Github Saya.

Terimakasih atas kunjungannya, pada tutorial berikutnya, kita akan belajar Cara Menghapus dan Mengupdate data dari SQLite Database. Semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Cara Menampilkan Data SQLite pada ListView

Cara Menampilkan Data SQLite pada ListView

Assalamualaikum Warahmatullahi Wabarakatuh.

Pada tutorial sebelumnya, kita sudah mempelajar Bagaimana Cara Menambahkan Data pada SQLite Database, selanjutnya kita akan belajar, cara menampilkan data yang sudah kita simpan didalam SQLite pada ListView, Walaupun ListView sudah tergantikan oleh RecycerView, namun, agar lebih mudah, kita akan mencoba menggunakan ListView terlebih dahulu.

Cara Menampilkan Data SQLite pada ListView

Disini kita akan menlanjutkan project aplikasi yang sudah kita buat sebelumnya. yaitu aplikasi CRUD (Create, Read, Update, Delete) menggunakan SQLite Database.

Cara Menampilkan Data SQLite pada ListView

Untuk mengamblil data dari SQLite Database, kita dapat menggunakan suatu Class bernama Cursor, Cursor di implementasikan sebagai Pointer atau petunjuk, yang memungkinkan kita untuk mengambil data dari Rows (Baris) pada sebuah kolom didalam SQLite Database.

Cursor digunakan untuk mengarahkan atau menentukan data mana yang akan diambil, kita dapat menentukan kolom dan juga no index atau posisi dari suatu data didalam baris.

1) Pertama buka project yang sudah kalian buat sebelumnya, buka activity_main.xml, kita akan tambahakan Button baru, untuk berpindah activity pada activity yang menampilkan data.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:layout_margin="12dp"
    android:orientation="vertical"
    tools:context="android.cianjur.developer.net.sqliteexample.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="4dp"
        android:gravity="center"
        android:text="Data Mahasiswa"
        android:textSize="20sp"
        android:textStyle="bold" />

    <EditText
        android:id="@+id/nim"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Masukan NIM"
        android:inputType="textPersonName"/>

    <EditText
        android:id="@+id/nama"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Masukan Nama"
        android:inputType="textPersonName" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="4dp"
        android:layout_marginTop="6dp"
        android:text="Fakultas/Jurusan:" />

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/jurusan"
        android:entries="@array/daftar_jurusan"
        android:padding="15dp">

    </Spinner>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Jenis Kelamin:" />

    <RadioGroup
        android:id="@+id/gender"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/male"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="false"
            android:text="Laki-Laki" />

        <RadioButton
            android:id="@+id/famale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="18dp"
            android:text="Perempuan" />
    </RadioGroup>

    <EditText
        android:id="@+id/date"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Tanggal Lahir"
        android:inputType="date" />

    <EditText
        android:id="@+id/alamat"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Alamat Lengkap"
        android:inputType="textMultiLine" />

    <Button
        android:id="@+id/save"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Simpan Data baru" />

    <Button
        android:id="@+id/readData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Lihat Data Yang Tersimpan" />
</LinearLayout>

View

CRUD layout Example

Jangan lupa untuk menambahkan OnClickListener pada Button tersebut:

Button viewData = findViewById(R.id.readData);
     viewData.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              startActivity(new Intent(MainActivity.this, ViewData.class));
          }
      });

2) Buat Activity Baru, berimana, misalnya "ViewData", pada activity tersebut, tambahkan ListView seperti berikut ini:

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="8dp"
    tools:context="android.cianjur.developer.net.sqliteexample.ViewData">

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>

3) Buka ViewData.java pada project kalian, disini kita akan membuat sebuah Cursor untuk mencatat data yang akan diambil, lalu menampilkannya pada ListView.

package android.cianjur.developer.net.sqliteexample;

import android.annotation.SuppressLint;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;

public class ViewData extends AppCompatActivity {

    private ListView listView;
    private DBMahasiswa MyDatabase;
    private ArrayList<String> ListData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_data);
        getSupportActionBar().setTitle("Daftar Mahasiswa");
        listView = findViewById(R.id.list);
        ListData = new ArrayList<>();
        MyDatabase = new DBMahasiswa(getBaseContext());
        getData();
        listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, ListData));
    }

    //Berisi Statement-Statement Untuk Mengambi Data dari Database
    @SuppressLint("Recycle")
    private void getData(){
        //Mengambil Repository dengan Mode Membaca
        SQLiteDatabase ReadData = MyDatabase.getReadableDatabase();
        Cursor cursor = ReadData.rawQuery("SELECT * FROM "+ DBMahasiswa.MyColumns.NamaTabel,null);

        cursor.moveToFirst();//Memulai Cursor pada Posisi Awal

        //Melooping Sesuai Dengan Jumlan Data (Count) pada cursor
        for(int count=0; count < cursor.getCount(); count++){

            cursor.moveToPosition(count);//Berpindah Posisi dari no index 0 hingga no index terakhir

            ListData.add(cursor.getString(1));//Menambil Data Dari Kolom 1 (Nama)
            //Lalu Memasukan Semua Datanya kedalam ArrayList
        }
    }
}

Penjelasan:

Pertama kita membuat beberapa Variable, yaitu ListView (Untuk memberikan fungsi pada ListView), DBMahasiswa (Untuk Menhubungkan Activity dengan Database pada class ini) dan ArrayList (Untuk Menyimpan Data Yang Telah Didapat dari Database Menggunakan Cursor).

Pada Method getData(), disana terdapat Statement-Statement untuk mengambil data Dari Database, dialam method tersebut, kita menggunakan Cursor untu mengarahkan data mana yang ingin diambil, karena kita ingin menggambil semua datanya sekaligus, jai kita cukup menggunakan rawQuery() untuk mengambilnya, menggunakan "SELECT * FROM", yang digunakan untuk mengambil semua data dari Tabel.

Supaya datanya bisa terambil semua, kita set posisi cursor tersebut berada di posisi awal, dengan menggunakan fungsi moveToFirst(), jadi setiap ada data yang masuk, cursor akan mengambil data tersebut dari awal, hinggal akhir.

Pada program tersebut, kita menggunakan for-loops untuk melooping sebanyak data yang terdapat pada database, posisi cursor akan berubah ubah dari baris (row) 0 hinggal jumlah yang telah ditentukan, jadi dengan begitu, kita dapat dengan mudah untuk mengambil semua data tersebut dari Database.

Lalu pada ArrayList, kita mengambil data dan memasukannya kedalam ArrayList dengan menggunakan fungsi getString(1), angka 1 (satu) tersebut artinya, kita mengambil data dari kolom 1, yaitu Nama.

Terakhir kita set ArrayList tersebut pada Adapter, dimana data tersebut akan di tampilkan pada ListView..

Demo:

Screenshot_ReadData SQLite Database Example

Projectnya Bisa Kalian Download di Github Saya.

Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Cara Menambahkan Data pada SQLite Database

Cara Menambahkan Data pada SQLite Database


Assalamualaikum Warahmatullahi Wabarakatuh.

Sebelumnya kita sudah membahas mengenai Cara Membuat Database pada SQLite, selanjutnya kita akan belajar, bagaimana cara untuk menambahkan sebuah data yang di inputkan user pada SQLite Database, pada tuorial sebelumnya kita sudah membuat Struktur Tabelnya, seperti nama, kolom dan juga tipe data yang akan digunakan.

Cara Menambahkan Data pada SQLite Databse (Part 2)

1) Pertama, buka file activity_main.xml pada project kalian, untuk mendapatkan Input dari user, kita membutuhkan bebrapa komponen seperti EditText, RadioButtton, Spinner dan sebuah Button untuk mengeksekusi serta menyimpan data.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:layout_margin="12dp"
    android:orientation="vertical"
    tools:context="android.cianjur.developer.net.sqliteexample.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="4dp"
        android:gravity="center"
        android:text="Data Mahasiswa"
        android:textSize="20sp"
        android:textStyle="bold" />

    <EditText
        android:id="@+id/nim"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Masukan NIM"
        android:inputType="textPersonName"/>

    <EditText
        android:id="@+id/nama"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Masukan Nama"
        android:inputType="textPersonName" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="4dp"
        android:layout_marginTop="6dp"
        android:text="Fakultas/Jurusan:" />

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/jurusan"
        android:entries="@array/daftar_jurusan"
        android:padding="15dp">

    </Spinner>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Jenis Kelamin:" />

    <RadioGroup
        android:id="@+id/gender"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/male"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Laki-Laki" />

        <RadioButton
            android:id="@+id/famale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="18dp"
            android:text="Perempuan" />
    </RadioGroup>

    <EditText
        android:id="@+id/date"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Tanggal Lahir"
        android:inputType="date" />

    <EditText
        android:id="@+id/alamat"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Alamat Lengkap"
        android:inputType="textMultiLine" />

    <Button
        android:id="@+id/save"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Simpan Data baru" />
</LinearLayout>

Untuk input jurusan, kita menggunakan Spinner untuk menentukan pilihannya, dan pada input jenis kelamin, kita menggunakan RadioButton untuk pilihannya.

2) Karena kita menggunakan Spinner untuk input jurusannya, disini kita akan belajar cara menambahkan item pada Spinner tersebut, caranya kalian buka file strings.xml yang tersapat pada folder res/values.

Membuat Item Resource

Lalu kita tambahkan string-array , misalnya kita ingin membuat daftar jurusan, tambahkan baris kode seperti berikut:

<string-array name="daftar_jurusan">
     <item>Teknik Informatika</item>
     <item>Manajemen Informatika</item>
     <item>Sastra Inggris</item>
     <item>Fakultas Ilmu Komunikasi</item>
     <item>Ekonomi Manajemen</item>
     <item>Ekonomi Akutansi</item>
     
</string-array>

Lalu tambahkan atribut entries didalam tag Spinner, seperti berikut ini:

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/jurusan"
    android:entries="@array/daftar_jurusan"
    android:padding="15dp">

3) Buka file MainActivity.java kalian, masukan source code berikut ini:

package android.cianjur.developer.net.sqliteexample;

import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private EditText NIM, Nama, TanggalLahir, Alamat;
    private Spinner Jurusan;
    private RadioButton MALE, FAMALE;

    //Variable Untuk Menyimpan Input Dari Ueer
    private String setNIM, setNama, setTanggalLahir, setAlamat, setJurusan, setJenisKelamin;

    //Variable Untuk Inisialisasi Database DBMahasiswa
    private DBMahasiswa dbMahasiswa;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button simpan = findViewById(R.id.save);
        NIM = findViewById(R.id.nim);
        Nama = findViewById(R.id.nama);
        TanggalLahir = findViewById(R.id.date);
        MALE = findViewById(R.id.male);
        FAMALE = findViewById(R.id.famale);
        Jurusan = findViewById(R.id.jurusan);
        Alamat = findViewById(R.id.alamat);

        //Inisialisasi dan Mendapatkan Konteks dari DBMahasiswa
        dbMahasiswa = new DBMahasiswa(getBaseContext());

        simpan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setData();
                saveData();
                Toast.makeText(getApplicationContext(),"Data Berhasil Disimpan", Toast.LENGTH_SHORT).show();
                clearData();
            }
        });
    }

    //Berisi Statement-Statement Untuk Mendapatkan Input Dari User
    private void setData(){
        setNIM = NIM.getText().toString();
        setNama = Nama.getText().toString();
        setJurusan = Jurusan.getSelectedItem().toString();
        if(MALE.isChecked()){
            setJenisKelamin = MALE.getText().toString();
        }else if (FAMALE.isChecked()){
            setJenisKelamin = FAMALE.getText().toString();
        }
        setTanggalLahir = TanggalLahir.getText().toString();
        setAlamat = Alamat.getText().toString();
    }

    //Berisi Statement-Statement Untuk Menyimpan Data Pada Database
    private void saveData(){
        //Mendapatkan Repository dengan Mode Menulis
        SQLiteDatabase create = dbMahasiswa.getWritableDatabase();

        //Membuat Map Baru, Yang Berisi Nama Kolom dan Data Yang Ingin Dimasukan
        ContentValues values = new ContentValues();
        values.put(DBMahasiswa.MyColumns.NIM, setNIM);
        values.put(DBMahasiswa.MyColumns.Nama, setNama);
        values.put(DBMahasiswa.MyColumns.Jurusan, setJurusan);
        values.put(DBMahasiswa.MyColumns.JenisKelamin, setJenisKelamin);
        values.put(DBMahasiswa.MyColumns.TanggalLahir, setTanggalLahir);
        values.put(DBMahasiswa.MyColumns.Alamat, setAlamat);

        //Menambahkan Baris Baru, Berupa Data Yang Sudah Diinputkan pada Kolom didalam Database
        create.insert(DBMahasiswa.MyColumns.NamaTabel, null, values);
    }

    private void clearData(){
        NIM.setText("");
        Nama.setText("");
        TanggalLahir.setText("");
        Alamat.setText("");
    }
}

Demo:

Screenshot_CRUD Example

Projectnya Bisa Kalian Download di Github Saya.

Terimakasih atas kunjungannya, pada tutorial selanjutnya, kita akan membahas mengenai Bagaimana Cara Menampilkan Data pada ListView.

Memoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Cara Membuat Database Menggunakan SQLite

Cara Membuat Database Menggunakan SQLite


Assalamualaikum Warahmatullahi Wabarakatuh.

Tutorial kali ini yang akan kita pelajari, yaitu cara membuat sebuah program aplikasi dengan menggunakan databse SQLite, Untuk para programmer pemulai ataupun senior, pastinya sudah tidak asing lagi dengan yang namanya program aplikasi CRUD (Create, Read, Update, Delete). Pada setiap bahasa pemrograman, pastinya banyak sekali tutoral yang menjelaskan mengenai program CRUD, dengan bahasa pemrograman yang berbeda-beda, seperti C++, PHP, Ruby, Java, Dll. Dengan menggunakan berbagai macam Database, seperti SQLite, MySql, Oracle, Firebase, dsb.

SQLite merupakan sebuah sistem manajemen basisdata relasional yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, yang dibangun pada sebuah library pada bahasa pemrograman C

Sebuah Dataase atau Basisdata berperan sangat penting pada suatu aplikasi, Database digunakan untuk menyimpan suatu Informasi Data yang di inputkan oleh User ataupun yang sudah kita set sebelumnya pada program aplikasi.

Cara Membuat Database Menggunakan SQLite (Part 1)

Pada tutorial CRUD ini, saya akan membagikannya dalam berbagai part (bagian), pada bagian yang pertama ini, kita akan mempelajari cara membuat Databasenya terlebih dahulu, setelah itu, kita akan lanjut dengan tutorial selanjutnya, seperti membuat fungsi Create, Insert, Update, Delete dan menampilkan datanya pada list.

Aplikasi yang akan kita buat yaitu, aplikasi Pendataan data Mahasiswa, sebelum membuat databse tersebut, pertama kita perlu menyipkan Struktur tabelnya terlebih dahulu, disini kita harus menentukan data apa saja yang harus di Inputkan.

Dan berikut ini merupakan Struktur Table yang akan kita terapkan pada SQLite Database:
Field Tipe Data key
NIM Text Primary Key
Nama_Mahasiswa Text Not Null
Jurusan Text Not Null
Jenis_Kelamin Text Not Null
Tanggal_Lahir Text Not Null
Alamat Text Not Null
Tutorial CRUD: Membuat Database pada SQLite (Part 1)

1) Buka Aplikasi Android Studio kalian, Buat Project Baru.

2) Pertama kita perlu membuat class SQLiteOpenHelper terlebih dahulu, Class ini digunakan untuk mengatur atau mengelola Struktur tabel yang akan dibuat, misalnya menentukan nama Tabel, nama kolom, Tipe Data, Key, dan juga Query.

Query digunakan untuk melakukan permintaan terhadap basis data atau database, untuk membuat tabel tersebut, kita perlu memasukan nama Tabel, kolom serta Tipe Data dan juga Key pada Query tersebut, supaya bisa di Create.

Buat Class baru, berinama class tersebut, misalnya "DBMahasiswa", pada class ini, kita akan mengextends suatu class, bernama SQLiteOpenHelper, dan juga mengimplementasi method-method didalamnya, pertama, buatlah source codenya seperti berikut ini:

package android.cianjur.developer.net.sqliteexample;

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

public class DBMahasiswa extends SQLiteOpenHelper{

    private static final String NamaDatabse = "unpi.db";
    private static final int VersiDatabase = 1;

    public DBMahasiswa(Context context) {
        super(context, NamaDatabse, null, VersiDatabase);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {

    }
}

Penjelasan:

Coba kalian perhatikan, kita mengextends class SQLiteOpenHelper beserta fungsi-fungsinya, yaitu onCreate() dan onUpgrade(), kedua fungsi tersebut digunakan untuk Membuat Query dan juga untuk mengupgrade Struktur Tabel.

Pertama kita membuat 2 buah variable, yang digunakan untuk menentukan nama database dan versi databse, untuk versi awal, kita set 1, terlebih dahulu.

Setiap kalian mengupgrade atau mengubah Struktur Table walaupun hanya sedikit saja, misalnya hanya mengganti nama kolom atau menambah satu kolom saja, kalian perlu mengganti nomor versi ke nomor versi selanjutnya, misalnya dari 1 ke 2 dan seterusnya.

Lalu kita implementasikan kedua variabe tersebut kedalam konstruktor dari class DBMahasiswa.

3) Selanjutnya kita buat InnerClass, yang digunakan untuk mengatur artibut-atribut seperti Nama Tabel, nama-nama kolom dan Query yang akan digunakan, pada InnerClass tersebut kita akan mengimplementasi class, bernama BaseColumns.

package android.cianjur.developer.net.sqliteexample;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;

public class DBMahasiswa extends SQLiteOpenHelper{

    //InnerClass, untuk mengatur artibut seperti Nama Tabel, nama-nama kolom dan Query
    static abstract class MyColumns implements BaseColumns{
        //Menentukan Nama Table dan Kolom
        static final String NamaTabel = "Mahasiswa";
        static final String NIM = "NIM";
        static final String Nama = "Nama_Mahasiswa";
        static final String Jurusan = "Jurusan";
        static final String JenisKelamin = "Jenis_Kelamin";
        static final String TanggalLahir = "Tanggal_Lahir";
        static final String Alamat = "Alamat";
    }

    private static final String NamaDatabse = "unpi.db";
    private static final int VersiDatabase = 1;

    //Query yang digunakan untuk membuat Tabel
    private static final String SQL_CREATE_ENTRIES = "CREATE TABLE "+MyColumns.NamaTabel+
            "("+MyColumns.NIM+" TEXT PRIMARY KEY, "+MyColumns.Nama+" TEXT NOT NULL, "+MyColumns.Jurusan+
            " TEXT NOT NULL, "+MyColumns.JenisKelamin+" TEXT NOT NULL, "+MyColumns.TanggalLahir+
            " TEXT NOT NULL, "+MyColumns.Alamat+" TEXT NOT NULL)";

    //Query yang digunakan untuk mengupgrade Tabel
    private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS "+MyColumns.NamaTabel;

    DBMahasiswa(Context context) {
        super(context, NamaDatabse, null, VersiDatabase);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_ENTRIES);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL(SQL_DELETE_ENTRIES);
        onCreate(db);
    }
}

Untuk penamaan pada Kolom didalam Database, kita tidak boleh menggunakan Spasi, kalian dapat menggantikannya dengan _ (Underscore).
Penjelasan:

Pada Class tersebut, kita menambahkan class Abstract, yaitu class yang tidak mempunyai Implementasinya secara langsung, class ini digunakan untuk menyiapkan atribut atau kompenen yang diperlukan.

Lalu kita membuat 2 buah variable, untuk menyimpan Query pada Tabel, yang akan dipanggil pada method onCreate() dan onUpgrade(),  pada variable SQL_CREATE_ENTRIES, digunakan untuk membuat dan menyimpan Query untuk membuat Struktur Tablenya dan menentukan Tipe Data serta Key pada masing-masing kolom.

Pada kolom NIM, kita set Primary Key, karena ini merupakan nomor unik yang tidak bisa di duplikasi atau diduakan, karena masing-masing mahasiswa harus mempunyai nomor NIM yang berbeda.

Selanjutnya pada variable SQL_DELETE_ENTRIES digunakan untuk mengupgrade Tabel, jika terdapat perubahan pada Struktur tabel tersebut, program secara otomatis akan menghapus Tabel lama dan menggantikannya dengan yang baru.

4) Berikutnya, kita panggil Database tersebut pada MainActivity kita, untuk mengecek apakah Databsenya berhasil dibuat.

package android.cianjur.developer.net.sqliteexample;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DBMahasiswa dbMahasiswa = new DBMahasiswa(getBaseContext());
        Toast.makeText(getApplication(), dbMahasiswa.getDatabaseName(), Toast.LENGTH_SHORT).show();
    }
}

5) Untuk mengecek apakah Database SQLitenya telah berhasil dibuat, kita dapat melakukan pengecekan dengan cara, jalankan project tersebut menggunakan Emulator, lalu buka Android Device Emulator, seperti berikut ini:

Android Device Monitor

Jangan lupa untuk mencentang Enable ADB Interation. Selanjutnya buka direktori data > data > (Nama Package pada Aplikasi Kita) > Database.

Projectnya Bisa Kalian Download di Github Saya.

Terimakasih atas kunjungannya, pada tutorial selanjutnya, kita akan membahas matei, Cara manbahkan data pada SQLite. Memoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.