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.


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


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:


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.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.