Tutorial : CRUD sederhana pada Android

Assalamualaikum Wr Wb

Pada kesempatan kali ini saya akan berbagi tutorial CRUD pada pemograman Android.

CRUD atau lengkapnya Create, Read, Update, Delete merupakan sebuah istilah yang sering digunakan dalam mengolah  data pada sebuah aplikasi. Sesuai dengan namanya, aplikasi yang akan kita buat kali ini akan menangani proses tambah, baca, edit dan delete data.

Aplikasi apa yang akan kita buat?

Pada kesempatan ini kita akan belajar membuat sebuah aplikasi biodata siswa.

Download source code :

https://drive.google.com/open?id=0Bzs8dwtc0HBaeHViOXJIdTlBYzQ

Download APK :

https://drive.google.com/open?id=0Bzs8dwtc0HBaZ0xtZlRRSzZuWGc

 

Langkah – langkah pembangunan Aplikasi

Sebelum mengikuti tutorial ini, pastikan komputer anda telah ter-istall JDK, Android Studio dan SDK. Jika belum, silahkan baca artikel Persiapan Pembangunan Aplikasi Android terlebih dulu.

Tips : Bagi anda yang baru belajar pemograman Android, saya sarankan anda menulis ulang kode program yang ada ada di web ini, jangan di Copy-Paste. Kenapa demikian? Pengalaman pribadi saya jika belajar bahasa pemograman baru dengan cara copy-paste itu susah diserap dan difahami. Makanya, untuk bisa memahami sebuah kode, biasanya saya menulis ulang kode tersebut.

Membuat Project Baru

  1. Silahkan buka Android Studio anda. Lalu klik File > New > Project.
  2. Isi informasi mengenai aplikasi yang akan kita buat. Lalu klik Next
  3. Centang Phone dan Tablet, Kemudian tentukan target minimum SDK , misal : API 15. Lalu klik Next
  4. Pilih Empty Activity, lalu klik Next
  5. Tentukan nama activity dan layout. Misal : MainActivity, activity_main (default)
  6. Klik finish

Membuat Database

  • Buat package baru dengan nama DB dengan cara klik kanan com.tutorial.biodatasiswa > New > Package
  • Sekarang buat 2 buah file .java dengan nama Database.java dan Siswa.java di dalam package DB yang telah kita buat sebelumnya. Klik kanan DB > New > Java Class

 

Buka file Database.java dan masukan kode dibawah ini :

package com.tutorial.biodatasiswa.DB;

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

/**
 * Created by nurdian on 3/18/2017.
 */

public class Database extends SQLiteOpenHelper {
    private static final String NAMA_DATABASE = "tutorial_db";
    private static final int VERSI_DATABASE = 1;
    public static final String TABEL_SISWA = "tbl_siswa";

    public static final String KEY_ID = "id";
    public static final String KEY_NIS = "nis";
    public static final String KEY_NAMA = "nama";
    public static final String KEY_JENIS_KELAMIN = "jk";
    public static final String KEY_KELAS  = "kelas";
    public static final String KEY_JURUSAN = "jurusan";
    public static final String KEY_TELP = "telp";
    public static final String KEY_ALAMAT = "alamat";

    public Database(Context context) {
        super(context, NAMA_DATABASE, null, VERSI_DATABASE);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String create_table_siswa = "create table "+TABEL_SISWA + "("
                + KEY_ID + " integer primary key, "
                + KEY_NIS + " text unique, "
                + KEY_NAMA + " text, "
                + KEY_JENIS_KELAMIN + " integer, "
                + KEY_KELAS + " integer, "
                + KEY_JURUSAN + " integer, "
                + KEY_TELP + " text, "
                + KEY_ALAMAT + " text"
                + ")";
        db.execSQL(create_table_siswa);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // fungsi ini digunakan untuk upgrage database
    }
}

Selanjutnya, buka file Siswa.java dan masukan kode berikut :

package com.tutorial.biodatasiswa.DB;


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import java.util.HashMap;

/**
 * Created by nurdian on 3/18/2017.
 */

public class Siswa extends Database{
    public Siswa(Context context) {
        super(context);
    }

    public void tambah(HashMap<String, String> data)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(KEY_NIS,data.get(KEY_NIS));
        values.put(KEY_NAMA,data.get(KEY_NAMA));
        values.put(KEY_JENIS_KELAMIN,data.get(KEY_JENIS_KELAMIN));
        values.put(KEY_KELAS,data.get(KEY_KELAS));
        values.put(KEY_JURUSAN,data.get(KEY_JURUSAN));
        values.put(KEY_TELP,data.get(KEY_TELP));
        values.put(KEY_ALAMAT,data.get(KEY_ALAMAT));
        db.insert(TABEL_SISWA,null,values);
        db.close();
    }
    public void ubah(HashMap<String, String> data)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(KEY_NIS,data.get(KEY_NIS));
        values.put(KEY_NAMA,data.get(KEY_NAMA));
        values.put(KEY_JENIS_KELAMIN,data.get(KEY_JENIS_KELAMIN));
        values.put(KEY_KELAS,data.get(KEY_KELAS));
        values.put(KEY_JURUSAN,data.get(KEY_JURUSAN));
        values.put(KEY_TELP,data.get(KEY_TELP));
        values.put(KEY_ALAMAT,data.get(KEY_ALAMAT));
        String where = KEY_ID + "=" + data.get(KEY_ID);
        db.update(TABEL_SISWA,values,where,null);
        db.close();
    }
    public Cursor ambil(String id){
        SQLiteDatabase db = this.getReadableDatabase();
        String query = "select * from " + TABEL_SISWA;
        if(id!=null){
            int ID = Integer.parseInt(id);
            query += " where "+KEY_ID+ "="+ID;
        }

        Cursor data = db.rawQuery(query,null);
        return  data;
    }
    public void hapus(int ID){
        SQLiteDatabase db = this.getWritableDatabase();
        String where = KEY_ID + "=" +ID;
        db.delete(TABEL_SISWA,where,null);
        db.close();
    }
}

Buka file app/res/values/colors.xml dan ubah kode berikut ini :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#4CAF50</color>
    <color name="colorPrimaryDark">#2E7D32</color>
    <color name="colorAccent">#4CAF50</color>
</resources>

Buka file app/res/values/strings.xml dan masukan kode berikut ini :

<resources>
    <string name="app_name">Biodata Siswa</string>
    <string name="label_nis">NIS</string>
    <string name="label_nama">Nama</string>
    <string name="label_jenis_kelamin">Jenis Kelamin</string>
    <string name="label_kelas">Kelas</string>
    <string name="label_jurusan">Jurusan</string>
    <string name="label_telp">Telepon</string>
    <string name="label_alamat">Alamat</string>
    <string-array name="arr_jenis_kelamin">
        <item>Laki - laki</item>
        <item>Perempuan</item>
    </string-array>
    <string-array name="arr_kelas">
        <item>1A</item>
        <item>1B</item>
        <item>1C</item>
        <item>2A</item>
        <item>2B</item>
        <item>2C</item>
        <item>3A</item>
        <item>3B</item>
        <item>3C</item>
    </string-array>
    <string-array name="arr_jurusan">
        <item>TKJ</item>
        <item>RPL</item>
        <item>MM</item>
    </string-array>
    <string name="button_simpan">Simpan</string>
    <string name="button_ubah">Ubah</string>
    <string name="button_hapus">Hapus</string>
    <string name="form_tambah_data">Tambah data siswa</string>
    <string name="form_ubah_data">Ubah data siswa</string>
    <string name="pesan_tambah_sukses">Tambah data berhasil</string>
    <string name="pesan_ubah_sukses">Data telah diubah</string>
    <string name="pesan_tidak_ada_data">Tidak ada data</string>
</resources>

Buka file Gradle Scripts/build.gradle(Module:app) dan tambah kode dibawah ini,

dependencies {
    ....
    compile 'com.android.support:design:25.1.0'
    ....
}

Note : Klik Sync di pojok kanan atas. Jika masih ada error, klik Build > Rebuild Project

 

Activity : Tambah Data Siswa

  • Klik kanan package com.tutorial.biodatasiswa > New > Activity > Empty Activity
  • Tentukan activity name nya. Misal : TambahSiswaActivity, dan Layout name: activity_tambah_siswa . Kemudian  klik Finish

Desain layout

Buka file activity_tambah_siswa.xml dan masukan kode dibawah ini :

<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.tutorial.biodatasiswa.TambahSiswaActivity">
    <LinearLayout android:padding="16dp" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content">
        <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content">
            <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/nis" android:inputType="number" android:hint="@string/label_nis"/>
        </android.support.design.widget.TextInputLayout>
        <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content">
            <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/nama" android:inputType="text" android:hint="@string/label_nama"/>
        </android.support.design.widget.TextInputLayout>
        <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="@string/label_jenis_kelamin"/>
        <RadioGroup android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content">
            <RadioButton android:layout_width="wrap_content" android:id="@+id/jk_laki" android:checked="true" android:text="Laki laki" android:layout_height="wrap_content" />
            <RadioButton android:layout_width="wrap_content" android:id="@+id/jk_perempuan" android:text="Perempuan" android:layout_height="wrap_content" />
        </RadioGroup>
        <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/label_kelas" android:layout_marginTop="10dp"/>
        <Spinner android:id="@+id/kelas" android:layout_width="match_parent" android:layout_height="wrap_content"></Spinner>
        <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="@string/label_jurusan"/>
        <Spinner android:id="@+id/jurusan" android:layout_width="match_parent" android:layout_height="wrap_content"></Spinner>
        <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content">
            <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" android:id="@+id/telp" android:hint="@string/label_telp"/>
        </android.support.design.widget.TextInputLayout>
        <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content">
            <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/alamat" android:hint="@string/label_alamat"/>
        </android.support.design.widget.TextInputLayout>
        <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btnSimpan" android:text="@string/button_simpan" style="@style/Widget.AppCompat.Button.Colored"/>
    </LinearLayout>
</ScrollView>

Source code .java

Buka file TambahSiswaActivity.java dan masukan kode berikut :

package com.tutorial.biodatasiswa;

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

import com.tutorial.biodatasiswa.DB.Siswa;

import java.util.HashMap;


public class TambahSiswaActivity extends AppCompatActivity {

    EditText Nis, Nama, Telp, Alamat;
    RadioButton jkLaki, jkPerempuan;
    Spinner Kelas, Jurusan;
    Button btnSimpan;

    String[] arr_kelas, arr_jurusan;
    String nis, nama, telp, alamat;
    private int jenis_kelamin, kelas, jurusan;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tambah_siswa);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);


        Nis = (EditText)findViewById(R.id.nis);
        Nama = (EditText)findViewById(R.id.nama);
        Telp = (EditText)findViewById(R.id.telp);
        Alamat = (EditText)findViewById(R.id.alamat);
        jkLaki = (RadioButton)findViewById(R.id.jk_laki);
        jkPerempuan = (RadioButton)findViewById(R.id.jk_perempuan);
        Kelas = (Spinner)findViewById(R.id.kelas);
        Jurusan = (Spinner)findViewById(R.id.jurusan);

        btnSimpan = (Button)findViewById(R.id.btnSimpan);
        btnSimpan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                simpanData();
            }
        });

        arr_kelas = getResources().getStringArray(R.array.arr_kelas);
        arr_jurusan = getResources().getStringArray(R.array.arr_jurusan);

        ArrayAdapter<CharSequence> adapterKelas = ArrayAdapter.createFromResource(this,R.array.arr_kelas,R.layout.support_simple_spinner_dropdown_item);
        ArrayAdapter<CharSequence> adapterJurusan = ArrayAdapter.createFromResource(this,R.array.arr_jurusan,R.layout.support_simple_spinner_dropdown_item);
        adapterKelas.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        adapterJurusan.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        Kelas.setAdapter(adapterKelas);
        Jurusan.setAdapter(adapterJurusan);

        Kelas.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                kelas = position;
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

        Jurusan.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                jurusan = position;
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }

    private void simpanData() {
        nis = Nis.getText().toString();
        nama = Nama.getText().toString();
        telp = Telp.getText().toString();
        alamat = Alamat.getText().toString();

        if(jkLaki.isChecked()){
            jenis_kelamin = 0;
        }
        else if(jkPerempuan.isChecked()){
            jenis_kelamin = 1;
        }
        Siswa siswa = new Siswa(getApplicationContext());
        HashMap<String,String> data = new HashMap<String,String>();
        data.put(siswa.KEY_NIS,nis);
        data.put(siswa.KEY_NAMA,nama);
        data.put(siswa.KEY_TELP,telp);
        data.put(siswa.KEY_ALAMAT,alamat);
        data.put(siswa.KEY_JENIS_KELAMIN,String.valueOf(jenis_kelamin));
        data.put(siswa.KEY_KELAS,String.valueOf(kelas));
        data.put(siswa.KEY_JURUSAN,String.valueOf(jurusan));

        siswa.tambah(data);
        siswa.close();

        Toast.makeText(this, getResources().getString(R.string.pesan_tambah_sukses), Toast.LENGTH_SHORT).show();
        setResult(1);
        finish();
    }
}

Activity : Main

Vector Asset (Icon)

Kita membutuhkan sebuah icon yang nanti nya akan digunakan untuk tombol Tambah dataBerikut ini cara untuk menambahkan icon dengan vector asset :

  • Klik kanan drawable yang ada pada app/res/drawable, lalu pilih New > Vector Asset
  • Klik tombol Icon
  • Cari dan pilih icon “add”  (+) lalu klik OK
  • Buat nama untuk icon tersebut pada kolom Name, misal ic_tambah  lalu klik Next
  • Klik Finish

Desain layout

Buka file activity_main.xml dan masukan kode dibawah ini :

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.tutorial.biodatasiswa.MainActivity">

    <ListView android:id="@+id/list_siswa" style="@style/Base.Widget.AppCompat.ListView" android:layout_width="match_parent" android:layout_height="match_parent">

    </ListView>

    <android.support.design.widget.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_tambah" android:tint="@android:color/white" android:layout_gravity="bottom" android:layout_margin="16dp" android:id="@+id/btnTambah" />
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/no_data" android:gravity="center" android:orientation="vertical" android:padding="16dp">
        <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="^.^" android:id="@+id/emotion" android:paddingBottom="10dp" android:textAlignment="center" android:textSize="70dp"/>
        <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textAlignment="center" android:textSize="16dp" android:id="@+id/message" android:text="@string/pesan_tidak_ada_data"/>
    </LinearLayout>

</android.support.design.widget.CoordinatorLayout>

Buat layout baru untuk menampilkan data siswa pada listview. Klik kanan app/res/layout > XML > XML Layout File. Tentukan nama filenya, misal: listview_siswa dan klik Finish. Buka file listview_siswa.xml dan ketikan kode dibawah ini :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:padding="16dp" android:layout_height="wrap_content">
    <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/text_nama" android:text="@string/label_nama" android:textColor="@android:color/black"/>
</LinearLayout>

Source code .java

Buka file MainActivity.java dan masukan kode berikut :

package com.tutorial.biodatasiswa;

import android.content.Intent;
import android.database.Cursor;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.tutorial.biodatasiswa.DB.Siswa;

public class MainActivity extends AppCompatActivity{

    FloatingActionButton btnTambah;
    ListView listSiswa;
    LinearLayout no_data;
    String[] arr_nama, arr_id ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnTambah = (FloatingActionButton)findViewById(R.id.btnTambah);
        btnTambah.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Membuka activity Tambah siswa
                Intent intent = new Intent(getApplicationContext(),TambahSiswaActivity.class);
                startActivityForResult(intent,212); // 212 : kode request, bebas diisi angka berapa aja.
            }
        });

        listSiswa = (ListView)findViewById(R.id.list_siswa);
        listSiswa.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // Membuka activity detail siswa
                Intent intent = new Intent(getApplicationContext(),DetailSiswaActivity.class);
                intent.putExtra("id",arr_id[position]);
                startActivityForResult(intent,424);
            }
        });

        no_data = (LinearLayout)findViewById(R.id.no_data);
        muatData();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==212 || requestCode==424){ // 212,424 mengacu pada kode request diatas.
            if(resultCode==1){ // Jika tambah data berhasil, maka lakukan refresh data.
                muatData();
            }
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        muatData();
    }

    private void muatData() {
        Siswa siswa = new Siswa(getApplicationContext());
        Cursor cursor = siswa.ambil(null);
        arr_nama = new String[cursor.getCount()];
        arr_id = new String[cursor.getCount()];
        if(cursor.moveToFirst()){
            int i = 0;
            do{
                arr_nama[i] = cursor.getString(cursor.getColumnIndex(siswa.KEY_NAMA));
                arr_id[i] = cursor.getString(cursor.getColumnIndex(siswa.KEY_ID));
                i++;
            }while (cursor.moveToNext());
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.listview_siswa,R.id.text_nama, arr_nama);
        listSiswa.setAdapter(adapter);

        if(cursor.getCount()>0){
            no_data.setVisibility(View.GONE);
        }
        else{
            no_data.setVisibility(View.VISIBLE);
        }
    }


}

Activity : Detail siswa

Buat Activity baru untuk detail siswa, dengan cara :

  • Klik kanan package com.tutorial.biodatasiswa > New > Activity > Empty Activity
  • Tentukan activity name nya. Misal : DetailSiswaActivity, dan Layout name: activity_detail_siswa . Kemudian  klik Finish

Desain Layout

Buka file activity_detail_siswa.xml dan masukan kode berikut :

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.tutorial.biodatasiswa.DetailSiswaActivity">
    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="12dp">
        <TextView android:layout_width="match_parent" android:padding="3dp" android:layout_height="wrap_content" android:text="@string/label_nis"/>
        <TextView android:padding="3dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/label_nis" android:textSize="18dp" android:id="@+id/tv_nis" android:textColor="@android:color/black" android:layout_marginBottom="10dp"/>
        <TextView android:layout_width="match_parent" android:padding="3dp" android:layout_height="wrap_content" android:text="@string/label_nama"/>
        <TextView android:padding="3dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/label_nama" android:textSize="18dp" android:id="@+id/tv_nama" android:textColor="@android:color/black" android:layout_marginBottom="10dp"/>
        <TextView android:layout_width="match_parent" android:padding="3dp" android:layout_height="wrap_content" android:text="@string/label_jenis_kelamin"/>
        <TextView android:padding="3dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/label_jenis_kelamin" android:textSize="18dp" android:id="@+id/tv_jenis_kelamin" android:textColor="@android:color/black" android:layout_marginBottom="10dp"/>
        <TextView android:layout_width="match_parent" android:padding="3dp" android:layout_height="wrap_content" android:text="@string/label_kelas"/>
        <TextView android:padding="3dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/label_kelas" android:textSize="18dp" android:id="@+id/tv_kelas" android:textColor="@android:color/black" android:layout_marginBottom="10dp"/>
        <TextView android:layout_width="match_parent" android:padding="3dp" android:layout_height="wrap_content" android:text="@string/label_jurusan"/>
        <TextView android:padding="3dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/label_jurusan" android:textSize="18dp" android:id="@+id/tv_jurusan" android:textColor="@android:color/black" android:layout_marginBottom="10dp"/>
        <TextView android:layout_width="match_parent" android:padding="3dp" android:layout_height="wrap_content" android:text="@string/label_telp"/>
        <TextView android:padding="3dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/label_telp" android:textSize="18dp" android:id="@+id/tv_telp" android:textColor="@android:color/black" android:layout_marginBottom="10dp"/>
        <TextView android:layout_width="match_parent" android:padding="3dp" android:layout_height="wrap_content" android:text="@string/label_alamat"/>
        <TextView android:padding="3dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/label_alamat" android:textSize="18dp" android:id="@+id/tv_alamat" android:textColor="@android:color/black" android:layout_marginBottom="10dp"/>
        <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/button_ubah" style="@style/Widget.AppCompat.Button.Colored" android:id="@+id/btnUbah"/>
        <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btnHapus" style="@style/Widget.AppCompat.Button.Borderless" android:text="@string/button_hapus"/>
    </LinearLayout>

</ScrollView>

Source code .java

Buka file DetailSiswaActivity.java dan ketikan kode berikut :

package com.tutorial.biodatasiswa;

import android.content.Intent;
import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.tutorial.biodatasiswa.DB.Siswa;

public class DetailSiswaActivity extends AppCompatActivity {

    private TextView Nis, Nama, JenisKelamin, Kelas, Jurusan, Telp, Alamat;
    String nis, nama, telp, alamat;
    int jenis_kelamin, kelas, jurusan;
    String[] arr_jenis_kelamin, arr_kelas, arr_jurusan;
    private Siswa siswa;
    private String id;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail_siswa);

        Nis = (TextView)findViewById(R.id.tv_nis);
        Nama = (TextView)findViewById(R.id.tv_nama);
        JenisKelamin = (TextView)findViewById(R.id.tv_jenis_kelamin);
        Kelas = (TextView)findViewById(R.id.tv_kelas);
        Jurusan = (TextView)findViewById(R.id.tv_jurusan);
        Telp = (TextView)findViewById(R.id.tv_telp);
        Alamat = (TextView)findViewById(R.id.tv_alamat);

        arr_jenis_kelamin = getResources().getStringArray(R.array.arr_jenis_kelamin);
        arr_kelas = getResources().getStringArray(R.array.arr_kelas);
        arr_jurusan = getResources().getStringArray(R.array.arr_jurusan);

        siswa = new  Siswa(getApplicationContext());
        Bundle bundle = getIntent().getExtras();
        id = bundle.getString("id");


        Button btnUbah = (Button)findViewById(R.id.btnUbah);
        btnUbah.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(),UbahSiswaActivity.class);
                intent.putExtra("id",id);
                startActivityForResult(intent,700);
            }
        });

        Button btnHapus = (Button)findViewById(R.id.btnHapus);
        btnHapus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int ID = Integer.parseInt(id);
                siswa.hapus(ID);
                setResult(1);
                finish();
            }
        });
        muatData();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==700){
            if(resultCode==1){
                muatData();
            }
        }
    }

    private void muatData() {
        Cursor data = siswa.ambil(id);
        if(data.moveToFirst()){
            do{
                nis = data.getString(data.getColumnIndex(siswa.KEY_NIS));
                nama = data.getString(data.getColumnIndex(siswa.KEY_NAMA));
                jenis_kelamin = data.getInt(data.getColumnIndex(siswa.KEY_JENIS_KELAMIN));
                kelas = data.getInt(data.getColumnIndex(siswa.KEY_KELAS));
                jurusan = data.getInt(data.getColumnIndex(siswa.KEY_JURUSAN));
                telp = data.getString(data.getColumnIndex(siswa.KEY_TELP));
                alamat = data.getString(data.getColumnIndex(siswa.KEY_ALAMAT));

                getSupportActionBar().setTitle(nama);
                Nis.setText(nis);
                Nama.setText(nama);
                JenisKelamin.setText(arr_jenis_kelamin[jenis_kelamin]);
                Kelas.setText(arr_kelas[kelas]);
                Jurusan.setText(arr_jurusan[jurusan]);
                Telp.setText(telp);
                Alamat.setText(alamat);
            }while (data.moveToNext());
        }
    }
}

Activity : Ubah data siswa

Buat Activity baru untuk activity ubah data siswa, dengan cara :

  • Klik kanan package com.tutorial.biodatasiswa > New > Activity > Empty Activity
  • Tentukan activity name nya. Misal : UbahSiswaActivity, dan Layout name: activity_ubah_siswa . Kemudian  klik Finish

Desain Layout

Buka file activity_ubah_siswa.xml dan ketikan kode berikut :

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.tutorial.biodatasiswa.TambahSiswaActivity">
    <LinearLayout android:padding="16dp" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content">
        <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content">
            <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/nis" android:inputType="number" android:hint="@string/label_nis"/>
        </android.support.design.widget.TextInputLayout>
        <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content">
            <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/nama" android:inputType="text" android:hint="@string/label_nama"/>
        </android.support.design.widget.TextInputLayout>
        <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="@string/label_jenis_kelamin"/>
        <RadioGroup android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content">
            <RadioButton android:layout_width="wrap_content" android:id="@+id/jk_laki" android:checked="true" android:text="Laki laki" android:layout_height="wrap_content" />
            <RadioButton android:layout_width="wrap_content" android:id="@+id/jk_perempuan" android:text="Perempuan" android:layout_height="wrap_content" />
        </RadioGroup>
        <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/label_kelas" android:layout_marginTop="10dp"/>
        <Spinner android:id="@+id/kelas" android:layout_width="match_parent" android:layout_height="wrap_content"></Spinner>
        <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="@string/label_jurusan"/>
        <Spinner android:id="@+id/jurusan" android:layout_width="match_parent" android:layout_height="wrap_content"></Spinner>
        <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content">
            <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" android:id="@+id/telp" android:hint="@string/label_telp"/>
        </android.support.design.widget.TextInputLayout>
        <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content">
            <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/alamat" android:hint="@string/label_alamat"/>
        </android.support.design.widget.TextInputLayout>
        <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btnSimpan" android:text="@string/button_simpan" style="@style/Widget.AppCompat.Button.Colored"/>
    </LinearLayout>
</ScrollView>

Source code .java

Bukalah file UbahSiswaActivity.java dan ketikan kode berikut ini:

package com.tutorial.biodatasiswa;

import android.database.Cursor;
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.RadioButton;
import android.widget.Spinner;
import android.widget.Toast;

import com.tutorial.biodatasiswa.DB.Siswa;

import java.util.HashMap;

public class UbahSiswaActivity extends AppCompatActivity {

    EditText Nis, Nama, Telp, Alamat;
    RadioButton jkLaki, jkPerempuan;
    Spinner Kelas, Jurusan;
    Button btnSimpan;

    String[] arr_kelas, arr_jurusan;
    String nis, nama, telp, alamat;
    int jenis_kelamin, kelas, jurusan;
    private String id;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ubah_siswa);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        Nis = (EditText)findViewById(R.id.nis);
        Nama = (EditText)findViewById(R.id.nama);
        Telp = (EditText)findViewById(R.id.telp);
        Alamat = (EditText)findViewById(R.id.alamat);
        jkLaki = (RadioButton)findViewById(R.id.jk_laki);
        jkPerempuan = (RadioButton)findViewById(R.id.jk_perempuan);
        Kelas = (Spinner)findViewById(R.id.kelas);
        Jurusan = (Spinner)findViewById(R.id.jurusan);

        arr_kelas = getResources().getStringArray(R.array.arr_kelas);
        arr_jurusan = getResources().getStringArray(R.array.arr_jurusan);

        ArrayAdapter<CharSequence> adapterKelas = ArrayAdapter.createFromResource(this,R.array.arr_kelas,R.layout.support_simple_spinner_dropdown_item);
        ArrayAdapter<CharSequence> adapterJurusan = ArrayAdapter.createFromResource(this,R.array.arr_jurusan,R.layout.support_simple_spinner_dropdown_item);
        adapterKelas.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        adapterJurusan.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        Kelas.setAdapter(adapterKelas);
        Jurusan.setAdapter(adapterJurusan);

        final Siswa siswa = new  Siswa(getApplicationContext());
        Bundle bundle = getIntent().getExtras();
        id = bundle.getString("id");
        Cursor data = siswa.ambil(id);
        if(data.moveToFirst()){
            do{
                nis = data.getString(data.getColumnIndex(siswa.KEY_NIS));
                nama = data.getString(data.getColumnIndex(siswa.KEY_NAMA));
                jenis_kelamin = data.getInt(data.getColumnIndex(siswa.KEY_JENIS_KELAMIN));
                kelas = data.getInt(data.getColumnIndex(siswa.KEY_KELAS));
                jurusan = data.getInt(data.getColumnIndex(siswa.KEY_JURUSAN));
                telp = data.getString(data.getColumnIndex(siswa.KEY_TELP));
                alamat = data.getString(data.getColumnIndex(siswa.KEY_ALAMAT));

                Nis.setText(nis);
                Nama.setText(nama);
                if(jenis_kelamin==0){
                    jkLaki.setChecked(true);
                }
                else if(jenis_kelamin==1){
                    jkPerempuan.setChecked(true);
                }
                Kelas.setSelection(kelas);
                Jurusan.setSelection(jurusan);
                Telp.setText(telp);
                Alamat.setText(alamat);
            }while (data.moveToNext());
        }

        btnSimpan = (Button)findViewById(R.id.btnSimpan);
        btnSimpan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                simpanData();
            }
        });
    }
    private void simpanData() {
        nis = Nis.getText().toString();
        nama = Nama.getText().toString();
        telp = Telp.getText().toString();
        alamat = Alamat.getText().toString();

        if(jkLaki.isChecked()){
            jenis_kelamin = 0;
        }
        else if(jkPerempuan.isChecked()){
            jenis_kelamin = 1;
        }
        Siswa siswa = new Siswa(getApplicationContext());
        HashMap<String,String> data = new HashMap<String,String>();
        data.put(siswa.KEY_ID,id);
        data.put(siswa.KEY_NIS,nis);
        data.put(siswa.KEY_NAMA,nama);
        data.put(siswa.KEY_TELP,telp);
        data.put(siswa.KEY_ALAMAT,alamat);
        data.put(siswa.KEY_JENIS_KELAMIN,String.valueOf(jenis_kelamin));
        data.put(siswa.KEY_KELAS,String.valueOf(kelas));
        data.put(siswa.KEY_JURUSAN,String.valueOf(jurusan));

        siswa.ubah(data);
        siswa.close();

        Toast.makeText(this, getResources().getString(R.string.pesan_ubah_sukses), Toast.LENGTH_SHORT).show();
        setResult(1);
        finish();
    }
}

AndroidManifest.xml

Buka file app/manifest/AndroidManifest.xml dan ubahlah menjadi seperti dibawah ini :

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

    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".TambahSiswaActivity" android:label="@string/form_tambah_data" android:parentActivityName=".MainActivity" />
        <activity android:name=".DetailSiswaActivity" android:parentActivityName=".MainActivity" />
        <activity android:name=".UbahSiswaActivity" android:parentActivityName=".MainActivity" android:label="@string/form_ubah_data"></activity>
    </application>

</manifest>

Menjalankan Aplikasi

Aplikasi telah selesai dibuat, saatnya kita melihat hasilnya. Untuk menjalankan aplikasi klik Run > Run ‘app’

 

Itulah tutorial untuk membuat CRUD sederhana pada Android. Semoga bermanfaat 🙂

 

 

One thought on “Tutorial : CRUD sederhana pada Android

Leave a Reply

Your email address will not be published. Required fields are marked *