Tutorial Membuat Aplikasi CRUD Sederhana dengan Android Studio


Aplikasi CRUD Sederhana Menggunakan Android Studio dengan Database Room Persistence

Pada kali ini project kami mengambil tema aplikasi toko online jam tangan bernama House of Time App. Di dalamnya terdapat dua implementasi peran / roles yakni admin dan user roles, dimana admin berfungsi untuk melakukan CRUD data dan user sebagai pengguna yang akan melakukan transaksi. Disini kami menggunakan database local yakni room data persistence sebagai alokasi penyimpanan data.
1.      Buka Android Studio

2.      Buat Project Baru -> Pilih Empty Activity

3.      Beri Nama Project yang akan di Buat


4.      Tambahkan code pada graddle : app sebagai berikut :
Tambahkan javaCompileOption untuk membuat directori local baru
Tambahkan dependency :

5.      Buatlah Package Baru sebagai berikut :

6.      Buat class baru di dalam package model dengan nama User

Masukkan source code berikut di dalam class User
package com.rifqiiardhian.bismillahuaslancar.model;


import
androidx.annotation.NonNull;
import
androidx.room.ColumnInfo;
import
androidx.room.Entity;
import
androidx.room.Index;
import
androidx.room.PrimaryKey;

@Entity(tableName = "user",
   
indices = {
       
@Index("id")
    }
)
public class User {
   
@PrimaryKey(autoGenerate = true)
   
@NonNull
    @ColumnInfo
(name = "id")
   
private Integer id;

   
@NonNull
    @ColumnInfo
(name = "first_name")
   
private String first_name;

   
@NonNull
    @ColumnInfo
(name = "last_name")
   
private String last_name;

   
@NonNull
    @ColumnInfo
(name = "email")
   
private String email;

   
@NonNull
    @ColumnInfo
(name = "username")
   
private String username;

   
@NonNull
    @ColumnInfo
(name = "password")
   
private String password;

    public
User() {
    }

   
@NonNull
   
public Integer getId() {
       
return id;
   
}

    
public void setId(@NonNull Integer id) {
       
this.id = id;
   
}

   
@NonNull
   
public String getFirst_name() {
       
return first_name;
   
}

   
public void setFirst_name(@NonNull String first_name) {
       
this.first_name = first_name;
    
}

   
@NonNull
   
public String getLast_name() {
       
return last_name;
   
}

   
public void setLast_name(@NonNull String last_name) {
       
this.last_name = last_name;
   
}

   
@NonNull
   
public String getEmail() {
       
return email;
   
}

   
public void setEmail(@NonNull String email) {
       
this.email = email;
   
}

   
@NonNull
   
public String getUsername() {
       
return username;
   
}

   
public void setUsername(@NonNull String username) {
       
this.username = username;
   
}

   
@NonNull
   
public String getPassword() {
       
return password;
   
}

   
public void setPassword(@NonNull String password) {
       
this.password = password;
   
}
}

7.  Buat class baru di dalam package connection dengan nama DBConnection.
Masukkan source code berikut:
package com.rifqiiardhian.bismillahuaslancar.connection;



import android.content.Context;

import androidx.room.Database;

import androidx.room.Room;

import androidx.room.RoomDatabase;

import com.rifqiiardhian.bismillahuaslancar.model.Kategori;

import com.rifqiiardhian.bismillahuaslancar.model.Produk;

import com.rifqiiardhian.bismillahuaslancar.model.User;

import com.rifqiiardhian.bismillahuaslancar.service.KategoriDao;

import com.rifqiiardhian.bismillahuaslancar.service.ProdukDao;

import com.rifqiiardhian.bismillahuaslancar.service.UserDao;



@Database(entities = {User.class, Kategori.class, Produk.class}, version = 2, exportSchema = false)

public abstract class DbConnection extends RoomDatabase {

    private static DbConnection INSTANCE;



    public abstract UserDao userDao();

    public abstract KategoriDao kategoriDao();

    public abstract ProdukDao produkDao();



    public static DbConnection getDatabase(Context context){

        if(INSTANCE == null){

            INSTANCE = Room.databaseBuilder(context.getApplicationContext(), DbConnection.class

                    , "houseoftime")

                    .allowMainThreadQueries().fallbackToDestructiveMigration().build();

        }

        return INSTANCE;

    }

}

8.  Buka activity_main.xml masukkan source code berikut
<?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"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@drawable/start"

    tools:context=".controller.MainActivity">



    <ImageView

        android:id="@+id/button_next"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentEnd="true"

        android:layout_alignParentBottom="true"

        android:layout_margin="20dp"

        android:src="@drawable/arrow"/>



</RelativeLayout>
Preview layoutnya akan seperti berikut

9.  Tambahkan source code berikut di dalam class MainActivity untuk aksi button next
           package com.rifqiiardhian.bismillahuaslancar.controller;



import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.ImageView;

import com.rifqiiardhian.bismillahuaslancar.R;



public class MainActivity extends AppCompatActivity implements View.OnClickListener {



    ImageView btnNext;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



        btnNext = findViewById(R.id.button_next);

        btnNext.setOnClickListener(this);

    }



    @Override

    public void onClick(View view) {

        if(view.getId() == R.id.button_next){

            Intent intent = new Intent(MainActivity.this, signin_option.class);

            startActivity(intent);

        }

    }

}

10.  Buat activity baru dengan nama activity_signin_option.xml
<?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"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@color/colordasar"

    tools:context=".controller.signin_option">



    <ImageView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerInParent="true"



        android:src="@drawable/backlogin"/>



    <ImageView

        android:id="@+id/logo_jam"

        android:layout_width="100dp"

        android:layout_height="40dp"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="160dp"



        android:src="@drawable/logojam"/>



    <TextView

        android:id="@+id/already"

        android:layout_below="@+id/logo_jam"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="50dp"



        android:textSize="20dp"

        android:textColor="@color/colordark"

        android:text="Already have an account ?"/>



    <Button

        android:id="@+id/buttonLogin"

        android:layout_below="@id/already"

        android:layout_width="250dp"

        android:layout_height="60dp"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="20dp"

        android:background="@color/colordark"



        android:textSize="20dp"

        android:textColor="@color/putihmenu"

        android:text="SIGN IN"/>



    <TextView

        android:id="@+id/or"

        android:layout_below="@+id/buttonLogin"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="20dp"



        android:textSize="20dp"

        android:textColor="@color/colordark"

        android:text="------- or -------"/>



    <Button

        android:id="@+id/buttonSignup"

        android:layout_below="@id/or"

        android:layout_width="250dp"

        android:layout_height="60dp"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="20dp"

        android:background="@color/colordark"



        android:textSize="20dp"

        android:textColor="@color/putihmenu"

        android:text="SIGN UP"/>



</RelativeLayout>
Preview layoutnya akan seperti berikut

11.  Tambahkan source code berikut pada colors.xml untuk menambah warna baru.
<?xml version="1.0" encoding="utf-8"?>

<resources>

    <color name="colorPrimary">#008577</color>

    <color name="colorPrimaryDark">#00574B</color>

    <color name="colorAccent">#D81B60</color>

    <color name="colordasar">#E8E89A</color>

    <color name="colordark">#29291F</color>

    <color name="putihmenu">#eeeeee</color>

    <color name="home">#F2F2F2</color>

</resources>

12.  Buat activity baru dengan nama activity_login.xml
<?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"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@color/colordasar"

    tools:context=".controller.login">



    <ImageView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerInParent="true"



        android:src="@drawable/backlogin"/>



    <ImageView

        android:id="@+id/judulLogin"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="180dp"



        android:src="@drawable/login"/>



    <ImageView

        android:id="@+id/username"

        android:layout_below="@+id/judulLogin"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="70dp"



        android:src="@drawable/username"/>



    <EditText

        android:id="@+id/inputUsername"

        android:layout_below="@id/judulLogin"

        android:layout_width="220dp"

        android:layout_height="wrap_content"

        android:layout_marginStart="115dp"

        android:layout_marginTop="75dp"



        android:inputType="text"

        android:textSize="23dp"

        android:textColor="@color/putihmenu"/>



    <ImageView

        android:id="@+id/password"

        android:layout_below="@+id/username"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="20dp"



        android:src="@drawable/password"/>



    <EditText

        android:id="@+id/inputPassword"

        android:layout_below="@id/username"

        android:layout_width="220dp"

        android:layout_height="wrap_content"

        android:layout_marginStart="115dp"

        android:layout_marginTop="25dp"



        android:inputType="textPassword"

        android:textSize="23dp"

        android:textColor="@color/putihmenu"/>



    <ImageView

        android:id="@+id/submitLogin"

        android:layout_below="@+id/password"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="60dp"



        android:src="@drawable/buttonlogin"/>



</RelativeLayout>
Preview layoutnya akan seperti berikut:

13.   Membuat class SessionManager di dalam package helpel, dan masukkan source code berikut:
    package com.rifqiiardhian.bismillahuaslancar.helper;



import android.content.Context;
import android.content.SharedPreferences;
import java.util.HashMap;

public class SessionManager {

    SharedPreferences pref;
    SharedPreferences.Editor editor;
    Context context;
    int PRIVATE_MODE = 0;

    private static final String PREF_NAME = "User References";

    public static final String ID_USER = "id_user";

    public static final String NAMA_DEPAN = "nama_depan";

    public static final String USERNAME = "username";


    public SessionManager(Context context) {
        this.context = context;
        pref = context.getSharedPreferences(PREF_NAME,PRIVATE_MODE);
        editor = pref.edit();
    }

    public void createLoginSession(String id_user, String nama_depan, String username){

        editor.putString(ID_USER, id_user);
        editor.putString(NAMA_DEPAN, nama_depan);
        editor.putString(USERNAME, username);
        editor.commit();
    }

    public HashMap<String, String> getDataUser(){
        HashMap<String, String> user = new HashMap<String, String>();
        user.put(ID_USER, pref.getString(ID_USER, null));
        user.put(NAMA_DEPAN, pref.getString(NAMA_DEPAN, null));
        user.put(USERNAME, pref.getString(USERNAME, null));
        return user;
    }

    public void clearSession(){
        editor.clear().apply();
    }
}


14. Buka class login.java. Masukkan Source code berikut ini
    package com.rifqiiardhian.bismillahuaslancar.controller;



import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.Toast;

import com.rifqiiardhian.bismillahuaslancar.R;

import com.rifqiiardhian.bismillahuaslancar.connection.DbConnection;

import com.rifqiiardhian.bismillahuaslancar.helper.SessionManager;

import com.rifqiiardhian.bismillahuaslancar.model.User;

import com.rifqiiardhian.bismillahuaslancar.service.UserDao;



public class login extends AppCompatActivity implements View.OnClickListener {



    EditText textUsername, textPassword;

    ImageView submit;

    SessionManager session;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_login);



        session = new SessionManager(getApplicationContext());



        textUsername = findViewById(R.id.inputUsername);

        textPassword = findViewById(R.id.inputPassword);



        submit = findViewById(R.id.submitLogin);

        submit.setOnClickListener(this);

    }



    @Override

    public void onClick(View view) {

        if(view.getId() == R.id.submitLogin){

            String user = this.textUsername.getText().toString();

            String pass = this.textPassword.getText().toString();



            DbConnection db = DbConnection.getDatabase(getApplicationContext());

            UserDao userDao = db.userDao();



            User cek = userDao.cekLogin(user,pass);



            if(cek == null){

                Toast.makeText(getApplicationContext(), "Login gagal, silakan coba lagi", Toast.LENGTH_SHORT).show();

            }else if(cek.getUsername().equals("admintoko") && cek.getPassword().equals("12345")){

                Intent intent = new Intent(login.this, mainadmin.class);

                startActivity(intent);

            }else if(user.equals(cek.getUsername()) && pass.equals(cek.getPassword())){

                String session_id = cek.getId().toString();

                String session_nama_depan = cek.getFirst_name().toString();

                String session_username = cek.getUsername().toString();



                session.createLoginSession(session_id, session_nama_depan, session_username);



                Intent intent = new Intent(login.this, mainuser.class);

                startActivity(intent);

            }else if(user != cek.getUsername() || pass != cek.getPassword()) {

                Toast.makeText(getApplicationContext(), "Login gagal, silakan coba lagi", Toast.LENGTH_SHORT).show();

                this.textUsername.setText("");

                this.textPassword.setText("");

            }

        }

    }

}
      Jika Username dan Password sesuai dengan data yang ada dalam database maka akan bisa mengakses halaman dashboard, apabila gagal maka harus register terlebih dahulu.

15. Membuat activity baru dengan nama activity_register.xml

    <?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"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@color/colordasar"

    tools:context=".controller.register">



    <ImageView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:src="@drawable/kotakregister"

        android:layout_centerInParent="true"/>



    <TextView

        android:id="@+id/judul"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="70dp"



        android:textColor="@color/colordark"

        android:textSize="30dp"

        android:text="REGISTER"/>



    <ImageView

        android:id="@+id/editNamaDepan"

        android:layout_below="@id/judul"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="25dp"



        android:src="@drawable/edittextregister"/>



    <EditText

        android:id="@+id/textNamaDepan"

        android:layout_below="@id/judul"

        android:layout_width="270dp"

        android:layout_height="60dp"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="25dp"



        android:hint="First Name"

        android:textColor="@color/putihmenu"

        android:textColorHint="@color/putihmenu"/>



    <ImageView

        android:id="@+id/editNamabelakang"

        android:layout_below="@id/editNamaDepan"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"



        android:src="@drawable/edittextregister"/>



    <EditText

        android:id="@+id/textNamaBelakang"

        android:layout_below="@id/textNamaDepan"

        android:layout_width="270dp"

        android:layout_height="60dp"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="12dp"



        android:hint="Last Name"

        android:textColor="@color/putihmenu"

        android:textColorHint="@color/putihmenu"/>



    <ImageView

        android:id="@+id/editEmail"

        android:layout_below="@id/editNamabelakang"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"



        android:src="@drawable/edittextregister"/>



    <EditText

        android:id="@+id/textEmail"

        android:layout_below="@id/textNamaBelakang"

        android:layout_width="270dp"

        android:layout_height="60dp"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="12dp"



        android:hint="Email"

        android:textColor="@color/putihmenu"

        android:textColorHint="@color/putihmenu"/>



    <ImageView

        android:id="@+id/editUsername"

        android:layout_below="@id/editEmail"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"



        android:src="@drawable/edittextregister"/>



    <EditText

        android:id="@+id/textUsername"

        android:layout_below="@id/textEmail"

        android:layout_width="270dp"

        android:layout_height="60dp"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="12dp"



        android:hint="Username"

        android:textColor="@color/putihmenu"

        android:textColorHint="@color/putihmenu"/>



    <ImageView

        android:id="@+id/editPassword"

        android:layout_below="@id/editUsername"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"



        android:src="@drawable/edittextregister"/>



    <EditText

        android:id="@+id/textPassword"

        android:layout_below="@id/textUsername"

        android:layout_width="270dp"

        android:layout_height="60dp"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="12dp"



        android:inputType="textPassword"

        android:hint="Password"

        android:textColor="@color/putihmenu"

        android:textColorHint="@color/putihmenu"/>



    <ImageView

        android:id="@+id/editConfirmPassword"

        android:layout_below="@id/editPassword"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"



        android:src="@drawable/edittextregister"/>



    <EditText

        android:id="@+id/textConfirmPassword"

        android:layout_below="@id/textPassword"

        android:layout_width="270dp"

        android:layout_height="60dp"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="12dp"



        android:inputType="textPassword"

        android:hint="Confirm Password"

        android:textColor="@color/putihmenu"

        android:textColorHint="@color/putihmenu"/>



    <ImageView

        android:id="@+id/submit_register"

        android:layout_below="@+id/editConfirmPassword"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_marginTop="25dp"



        android:src="@drawable/button_register"/>

</RelativeLayout>
      Maka Preview layoutnya akan seperti berikut

16. Buka class register.java dan masukkan source code berikut

    package com.rifqiiardhian.bismillahuaslancar.controller;



import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.Toast;

import com.rifqiiardhian.bismillahuaslancar.R;

import com.rifqiiardhian.bismillahuaslancar.connection.DbConnection;

import com.rifqiiardhian.bismillahuaslancar.model.User;

import com.rifqiiardhian.bismillahuaslancar.service.UserDao;



public class register extends AppCompatActivity implements View.OnClickListener {



    EditText firstname, lastname, email, username, password;

    ImageView submit;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_register);



        firstname = findViewById(R.id.textNamaDepan);

        lastname = findViewById(R.id.textNamaBelakang);

        email = findViewById(R.id.textEmail);

        username = findViewById(R.id.textUsername);

        password = findViewById(R.id.textConfirmPassword);



        submit = findViewById(R.id.submit_register);

        submit.setOnClickListener(this);



    }



    @Override

    public void onClick(View view) {

        if(view.getId() == R.id.submit_register){

            DbConnection db = DbConnection.getDatabase(getApplicationContext());

            UserDao userDao = db.userDao();



            String fisrtName = this.firstname.getText().toString();

            String lastName = this.lastname.getText().toString();

            String email = this.email.getText().toString();

            String username = this.username.getText().toString();

            String password = this.password.getText().toString();



            User user = new User();

            user.setFirst_name(fisrtName);

            user.setLast_name(lastName);

            user.setEmail(email);

            user.setUsername(username);

            user.setPassword(password);



            userDao.save(user);



            Toast.makeText(getApplicationContext(), "Data "+username+ " sukses disimpan !", Toast.LENGTH_SHORT).show();

            System.out.println(user.getFirst_name()+ " " +user.getLast_name()+ " | "

                    +user.getEmail()+ " | " +user.getUsername()+ " | " +user.getPassword()+ " | SAVED");



            finish();

        }

    }

}

17. Membuat fragment baru dengan nama fragment_usersetting.xml, masukkan source code berikut
    <?xml version="1.0" encoding="utf-8"?>

<FrameLayout 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"

    tools:context=".controller.usersettings">



    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="match_parent">



        <ImageView

            android:layout_width="wrap_content"

            android:layout_height="match_parent"

            android:layout_marginTop="-1300dp"

            android:layout_marginStart="-100dp"



            android:src="@drawable/kotak_men"/>



        <TextView

            android:id="@+id/judul"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_marginTop="15dp"

            android:layout_marginStart="15dp"



            android:textColor="@color/colordark"

            android:textSize="40dp"

            android:text="User Profile"/>



        <ScrollView

            android:layout_below="@+id/judul"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_marginTop="60dp">



            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="match_parent"

                android:orientation="vertical">



                <ImageView

                    android:layout_width="100dp"

                    android:layout_height="100dp"

                    android:src="@drawable/userapp"

                    android:layout_gravity="center_horizontal"/>



                <TextView

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_marginStart="20dp"

                    android:layout_marginTop="50dp"

                    android:text="USERNAME"

                    android:textColor="@color/colordasar"

                    android:textSize="15dp"

                    android:textStyle="bold"/>



                <TextView

                    android:id="@+id/username"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_marginStart="20dp"

                    android:layout_marginBottom="20dp"

                    android:text="TEST"

                    android:textSize="25dp"/>



                <TextView

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_marginStart="20dp"

                    android:text="NAME"

                    android:textColor="@color/colordasar"

                    android:textSize="15dp"

                    android:textStyle="bold"/>



                <TextView

                    android:id="@+id/name"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_marginStart="20dp"

                    android:layout_marginBottom="20dp"

                    android:text="TEST"

                    android:textSize="25dp"/>



                <TextView

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_marginStart="20dp"

                    android:text="EMAIL"

                    android:textColor="@color/colordasar"

                    android:textSize="15dp"

                    android:textStyle="bold"/>



                <TextView

                    android:id="@+id/email"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_marginStart="20dp"

                    android:layout_marginBottom="20dp"

                    android:text="TEST"

                    android:textSize="25dp"/>



                <Button

                    android:id="@+id/edit_profile"

                    android:layout_width="match_parent"

                    android:layout_height="50dp"

                    android:layout_marginTop="20dp"

                    android:layout_marginStart="20dp"

                    android:layout_marginEnd="20dp"

                    android:layout_marginBottom="5dp"

                    android:background="@color/colordasar"

                    android:text="EDIT PROFILE"

                    android:textSize="18dp"

                    android:textColor="@color/colordark"/>



            </LinearLayout>



        </ScrollView>



    </RelativeLayout>



</FrameLayout>
      Preview layout akan seperti berikut 

18. Buka class usersetting.java yang berada dalam package controller dan masukkan source code berikut

    package com.rifqiiardhian.bismillahuaslancar.controller;



import android.content.Intent;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.Button;

import android.widget.TextView;

import com.rifqiiardhian.bismillahuaslancar.R;

import com.rifqiiardhian.bismillahuaslancar.connection.DbConnection;

import com.rifqiiardhian.bismillahuaslancar.helper.SessionManager;

import com.rifqiiardhian.bismillahuaslancar.model.User;

import com.rifqiiardhian.bismillahuaslancar.service.UserDao;

import java.util.HashMap;



public class usersettings extends Fragment implements View.OnClickListener {



    View view;

    SessionManager session;

    Button edit;

    TextView user, name, mail;

    int id;



    public usersettings() {

        // Required empty public constructor

    }



    @Override

    public View onCreateView(LayoutInflater inflater, ViewGroup container,

                             Bundle savedInstanceState) {

        // Inflate the layout for this fragment

        view = inflater.inflate(R.layout.fragment_usersettings, container, false);



        session = new SessionManager(getContext());



        edit = view.findViewById(R.id.edit_profile);

        edit.setOnClickListener(this);



        HashMap<String, String> userdata = session.getDataUser();

        String id_user = userdata.get(SessionManager.ID_USER);

        id = Integer.parseInt(id_user);



        DbConnection db = DbConnection.getDatabase(getContext());

        UserDao userDao = db.userDao();



        User dataUser = userDao.findOneById(id);



        String username = dataUser.getUsername();

        String firstname = dataUser.getFirst_name();

        String lastname = dataUser.getLast_name();

        String email = dataUser.getEmail();



        user = view.findViewById(R.id.username);

        user.setText(username);



        name = view.findViewById(R.id.name);

        name.setText(firstname+ " " +lastname);



        mail = view.findViewById(R.id.email);

        mail.setText(email);



        return view;

    }



    @Override

    public void onClick(View view) {

        if(view.getId() == R.id.edit_profile){

            Intent intent = new Intent(usersettings.this.getContext(), usereditprofile.class);

            startActivity(intent);



        }

    }

}

19. Membuat activity baru dengan nama activity_usereditprofile, masukkan source code berikut
    <?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"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".controller.usereditprofile">



    <ImageView

        android:layout_width="wrap_content"

        android:layout_height="match_parent"

        android:layout_marginTop="-1300dp"

        android:layout_marginStart="-100dp"



        android:src="@drawable/kotak_men"/>



    <TextView

        android:id="@+id/judul"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginTop="15dp"

        android:layout_marginStart="15dp"



        android:textColor="@color/colordark"

        android:textSize="40dp"

        android:text="User Profile"/>



    <TextView

        android:id="@+id/texttitle"

        android:layout_below="@id/judul"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginTop="50dp"

        android:layout_marginStart="20dp"

        android:text="EDIT PROFILE"

        android:textColor="@color/colordark"

        android:textSize="15dp"/>



    <ScrollView

        android:layout_below="@+id/texttitle"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginTop="25dp">



        <LinearLayout

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:orientation="vertical">



            <ImageView

                android:layout_width="100dp"

                android:layout_height="100dp"

                android:src="@drawable/userapp"

                android:layout_gravity="center_horizontal"/>



            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginStart="20dp"

                android:layout_marginTop="30dp"

                android:text="USERNAME"

                android:textColor="@color/colordark"

                android:textSize="15dp"/>



            <EditText

                android:id="@+id/textEditUsername"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_margin="20dp"

                android:editable="false"/>



            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginStart="20dp"

                android:text="FIRSTNAME"

                android:textColor="@color/colordark"

                android:textSize="15dp"/>



            <EditText

                android:id="@+id/textEditFirstname"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_margin="20dp"/>



            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginStart="20dp"

                android:text="LASTNAME"

                android:textColor="@color/colordark"

                android:textSize="15dp"/>



            <EditText

                android:id="@+id/textEditLastname"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_margin="20dp"/>



            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginStart="20dp"

                android:text="EMAIL"

                android:textColor="@color/colordark"

                android:textSize="15dp"/>



            <EditText

                android:id="@+id/textEditEmail"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_margin="20dp"/>



            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginStart="20dp"

                android:text="PASSWORD"

                android:textColor="@color/colordark"

                android:textSize="15dp"/>



            <EditText

                android:id="@+id/textEditPassword"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_margin="20dp"

                android:inputType="textPassword"/>



            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginStart="20dp"

                android:text="CONFIRM PASSWORD"



                android:textColor="@color/colordark"

                android:textSize="15dp"/>



            <EditText

                android:id="@+id/textEditConfirmPassword"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_margin="20dp"

                android:inputType="textPassword"/>



            <Button

                android:id="@+id/updateprofile"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_marginTop="20dp"

                android:layout_marginStart="20dp"

                android:layout_marginEnd="20dp"

                android:layout_marginBottom="5dp"

                android:background="@color/colorPrimary"

                android:text="UPDATE"

                android:textSize="18dp"

                android:textColor="@color/putihmenu"/>



            <Button

                android:id="@+id/cancel"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_marginTop="5dp"

                android:layout_marginStart="20dp"

                android:layout_marginEnd="20dp"

                android:layout_marginBottom="20dp"

                android:background="@color/colorAccent"

                android:text="BACK"

                android:textSize="18dp"

                android:textColor="@color/putihmenu"/>



        </LinearLayout>



    </ScrollView>



</RelativeLayout>


      Maka tampilan yang didapat sebagai berikut



20. Buka class usereditprofile. java di package controller dengan menambahkan source code berikut
    package com.rifqiiardhian.bismillahuaslancar.controller;



import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

import com.rifqiiardhian.bismillahuaslancar.R;

import com.rifqiiardhian.bismillahuaslancar.connection.DbConnection;

import com.rifqiiardhian.bismillahuaslancar.helper.SessionManager;

import com.rifqiiardhian.bismillahuaslancar.model.User;

import com.rifqiiardhian.bismillahuaslancar.service.UserDao;

import java.util.HashMap;



public class usereditprofile extends AppCompatActivity implements View.OnClickListener {



    SessionManager session;

    Button update, cancel;

    EditText editUser, editFirstName, editLastName, editEmail, editPassword, editPasswordConfirm;

    int id;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_usereditprofile);



        session = new SessionManager(getApplicationContext());



        HashMap<String, String> userdata = session.getDataUser();

        String id_user = userdata.get(SessionManager.ID_USER);

        id = Integer.parseInt(id_user);



        DbConnection db = DbConnection.getDatabase(getApplicationContext());

        UserDao userDao = db.userDao();



        User dataUser = userDao.findOneById(id);



        String username = dataUser.getUsername();

        String firstname = dataUser.getFirst_name();

        String lastname = dataUser.getLast_name();

        String email = dataUser.getEmail();

        String password = dataUser.getPassword();



        editUser = findViewById(R.id.textEditUsername);

        editUser.setText(username);



        editFirstName = findViewById(R.id.textEditFirstname);

        editFirstName.setText(firstname);



        editLastName = findViewById(R.id.textEditLastname);

        editLastName.setText(lastname);



        editEmail = findViewById(R.id.textEditEmail);

        editEmail.setText(email);



        editPassword = findViewById(R.id.textEditPassword);

        editPassword.setText(password);



        editPasswordConfirm = findViewById(R.id.textEditConfirmPassword);

        editPasswordConfirm.setText(password);



        update = findViewById(R.id.updateprofile);

        update.setOnClickListener(this);



        cancel = findViewById(R.id.cancel);

        cancel.setOnClickListener(this);

    }



    @Override

    public void onClick(View view) {

        if(view.getId() == R.id.cancel){

            finish();

        }else if(view.getId() == R.id.updateprofile){

            DbConnection db = DbConnection.getDatabase(getApplicationContext());

            UserDao userDao = db.userDao();



            String username = this.editUser.getText().toString();

            String firstname = this.editFirstName.getText().toString();

            String lastname = this.editLastName.getText().toString();

            String email = this.editEmail.getText().toString();

            String password = this.editPasswordConfirm.getText().toString();



            User user = new User();

            user.setId(id);

            user.setUsername(username);

            user.setFirst_name(firstname);

            user.setLast_name(lastname);

            user.setEmail(email);

            user.setPassword(password);



            userDao.update(user);



            Toast.makeText(getApplicationContext(), "Data "+user.getUsername()+ " sukses diupdate !", Toast.LENGTH_SHORT).show();

            System.out.println(user.getUsername() + " | UPDATED");



            finish();

        }

    }

}

21. Membuat CRUD Kategori
      Membuat kelas model Kategori.java sebagai implementasi tabel pada aplikasi
    package com.rifqiiardhian.bismillahuaslancar.model;



import androidx.annotation.NonNull;

import androidx.room.ColumnInfo;

import androidx.room.Entity;

import androidx.room.Index;

import androidx.room.PrimaryKey;



@Entity(tableName = "kategori",

    indices = {

        @Index("id")

    }

)

public class Kategori {

    @PrimaryKey(autoGenerate = true)

    @NonNull

    @ColumnInfo(name = "id")

    private Integer id;



    @NonNull

    @ColumnInfo(name = "nama")

    private String nama;



    public Kategori() {

    }



    @NonNull

    public Integer getId() {

        return id;

    }



    public void setId(@NonNull Integer id) {

        this.id = id;

    }



    @NonNull

    public String getNama() {

        return nama;

    }



    public void setNama(@NonNull String nama) {

        this.nama = nama;

    }

}
     Membuat KategoriDao.java yang berisikan aksi-aksi CRUD dan custom query
 
 Masukkan Source code berikut
package com.rifqiiardhian.bismillahuaslancar.service;



import androidx.room.Dao;

import androidx.room.Delete;

import androidx.room.Insert;

import androidx.room.Query;

import androidx.room.Update;

import com.rifqiiardhian.bismillahuaslancar.model.Kategori;

import java.util.List;



@Dao

public interface KategoriDao {

    @Query("SELECT * FROM kategori")

    public List<Kategori> findAll();



    @Query("SELECT * FROM kategori WHERE id = :id")

    public Kategori findOneById(Integer id);



    @Insert

    public void save(Kategori kategori);



    @Update

    public void update(Kategori kategori);



    @Delete

    public void delete(Kategori kategori);

}

Menambahkan tabel kategori ke DBConnection, version dari database harus dinaikkan 1 agar tidak terjadi error.
@Database(entities = {User.class, Kategori.class, Produk.class}, version = 2, exportSchema = false)

public abstract class DbConnection extends RoomDatabase {

    private static DbConnection INSTANCE;



    public abstract UserDao userDao();

    public abstract KategoriDao kategoriDao();

    public abstract ProdukDao produkDao();



    public static DbConnection getDatabase(Context context){

        if(INSTANCE == null){

            INSTANCE = Room.databaseBuilder(context.getApplicationContext(), DbConnection.class

                    , "houseoftime")

                    .allowMainThreadQueries().fallbackToDestructiveMigration().build();

        }

        return INSTANCE;

    }

Membuat row_kategori.xml yang akan menjadi komponen dari listview kategori nantinya

<?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="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/dataCategory"

        android:textColor="@color/colordark"

        android:textStyle="bold"

        android:textSize="20dp"

        android:layout_marginTop="20dp"

        android:layout_marginBottom="20dp"

        android:layout_marginStart="20dp"/>



</LinearLayout>

Membuat kelas adapter kategori bernama CustomAdapterKategori.java

package com.rifqiiardhian.bismillahuaslancar.adapter;



import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ListView;

import android.widget.TextView;

import com.rifqiiardhian.bismillahuaslancar.R;

import com.rifqiiardhian.bismillahuaslancar.model.Kategori;

import java.util.List;



public class CustomAdapterKategori extends BaseAdapter {



    Context context;

    List<Kategori> list;



    public CustomAdapterKategori(Context context, List<Kategori> list) {

        this.context = context;

        this.list = list;

    }



    @Override

    public int getCount() {

        return list.size();

    }



    @Override

    public Object getItem(int i) {

        return list.get(i);

    }



    @Override

    public long getItemId(int i) {

        return i;

    }



    @Override

    public View getView(int i, View view, ViewGroup viewGroup) {

        if(view == null){

            view = LayoutInflater.from(context).inflate(R.layout.row_kategori,viewGroup,false);

        }



        TextView dataNama = view.findViewById(R.id.dataCategory);

        ListView dataKategori = view.findViewById(R.id.listCategory);



        Kategori kategori = list.get(i);



        dataNama.setText(kategori.getNama().toString());



        return view;

    }

}
Memanggil list Kategori, memanggil layout row_kategori.java dan set text pada row_kategori yang nantinya akan ditampilkan di halaman kategori.


Membuat halaman kategori bernama fragment_admincategory.xml

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

<FrameLayout 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"

    tools:context=".controller.admincategory">



    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="match_parent">



        <ImageView

            android:layout_width="wrap_content"

            android:layout_height="match_parent"

            android:layout_marginTop="-1300dp"

            android:layout_marginStart="-100dp"



            android:src="@drawable/kotak_men"/>



        <TextView

            android:id="@+id/judul"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_marginTop="15dp"

            android:layout_marginStart="15dp"



            android:textColor="@color/colordark"

            android:textSize="40dp"

            android:text="Category"/>



        <Button

            android:id="@+id/addCategory"

            android:layout_below="@id/judul"

            android:layout_width="150dp"

            android:layout_height="wrap_content"

            android:layout_marginTop="50dp"

            android:layout_marginStart="20dp"

            android:text="ADD CATEGORY"/>



        <ListView

            android:id="@+id/listCategory"

            android:layout_below="@id/addCategory"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:divider="@color/colordark"

            android:dividerHeight="1dp"

            android:layout_marginTop="25dp"

            android:listSelector="@color/colordasar">

        </ListView>

    </RelativeLayout>



</FrameLayout>

Menambahkan beberapa event pada admincategory.java untuk bisa menampilkan data dari database.

Deklarasikan bebrapa komponen berikut:

View view;

ListView dataKategori;

Button viewData, addData;



private ArrayList<Kategori> listCat;

private CustomAdapterKategori data;



public static final String TAG_ID = "id";

public static final String TAG_NAMA = "nama";

Masukkan source code berikut didalam oncreateview
view = inflater.inflate(R.layout.fragment_admincategory, container, false);



addData = view.findViewById(R.id.addCategory);

addData.setOnClickListener(this);



DbConnection db = DbConnection.getDatabase(getContext());

KategoriDao dao = db.kategoriDao();



List<Kategori> listKategori = dao.findAll();



listCat = new ArrayList<>();

for(Kategori cat: listKategori){

    listCat.add(cat);

}



dataKategori = view.findViewById(R.id.listCategory);



data = new CustomAdapterKategori(getContext(), listKategori);

dataKategori.setAdapter(data);


Tambahkan Onitemclicklistener agar berfungsi ketika salah satu list kategori diklik / dipilih
dataKategori.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        final String id_kategori = listKategori.get(position).getId().toString();

        final String nama_kategori = listKategori.get(position).getNama();



        Toast.makeText(getContext(), "Kategori " +nama_kategori+ " dengan ID : " +id_kategori, Toast.LENGTH_SHORT).show();

    }

});

Onitemlongclicklistener berfungsi ketika salah satu list kategori ditekan panjang maka akan diredirect ke halaman admin edit category

dataKategori.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

    @Override

    public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {

        final String id_kategori = listKategori.get(position).getId().toString();

        final String nama_kategori = listKategori.get(position).getNama();



        Intent intent = new Intent(admincategory.this.getActivity(), admineditcategory.class);

        intent.putExtra(TAG_ID, id_kategori);

        intent.putExtra(TAG_NAMA, nama_kategori);

        startActivity(intent);



        return false;

    }

});

Fungsi onclick untuk button add category
@Override

public void onClick(View view) {

    if(view.getId() == R.id.addCategory){

        Intent intent = new Intent(admincategory.this.getActivity(), adminaddcategory.class);

        startActivity(intent);

    }

}


Hasil source code diatas sebagai berikut

22. Membuat activity_adminaddcategory.xml untuk form tambah kategori.
<?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"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".controller.adminaddproduct">



    <ImageView

        android:layout_width="wrap_content"

        android:layout_height="match_parent"

        android:layout_marginTop="-1300dp"

        android:layout_marginStart="-100dp"



        android:src="@drawable/kotak_men"/>



    <TextView

        android:id="@+id/judul"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginTop="15dp"

        android:layout_marginStart="15dp"



        android:textColor="@color/colordark"

        android:textSize="40dp"

        android:text="Product"/>



    <TextView

        android:id="@+id/texttitle"

        android:layout_below="@id/judul"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginTop="50dp"

        android:layout_marginStart="20dp"

        android:text="ADD NEW PRODUCT"

        android:textColor="@color/colordark"

        android:textSize="15dp"/>



    <ScrollView

        android:layout_below="@+id/texttitle"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginTop="25dp">



        <LinearLayout

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:orientation="vertical">



            <ImageView

                android:id="@+id/gambarJam"

                android:layout_below="@+id/texttitle"

                android:layout_width="100dp"

                android:layout_height="200dp"

                android:layout_gravity="center_horizontal"



                android:src="@drawable/jamku"/>



            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginStart="20dp"

                android:text="MERK"

                android:textColor="@color/colordark"

                android:textSize="15dp"/>



            <EditText

                android:id="@+id/textAddMerk"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_margin="20dp"/>



            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginStart="20dp"

                android:text="NAMA PRODUK"

                android:textColor="@color/colordark"

                android:textSize="15dp"/>



            <EditText

                android:id="@+id/textAddNama"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_margin="20dp"/>



            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginStart="20dp"

                android:text="HARGA"

                android:textColor="@color/colordark"

                android:textSize="15dp"/>



            <EditText

                android:id="@+id/textAddHarga"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_margin="20dp"/>



            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginStart="20dp"

                android:text="STOK"

                android:textColor="@color/colordark"

                android:textSize="15dp"/>



            <EditText

                android:id="@+id/textAddStok"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_margin="20dp"/>



            <TextView

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_marginStart="20dp"

                android:text="KATEGORI"

                android:textColor="@color/colordark"

                android:textSize="15dp"/>



            <Spinner

                android:id="@+id/pilih_kategori"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_margin="20dp"



                android:layout_centerHorizontal="true"/>



            <Button

                android:id="@+id/saveproduct"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_marginTop="20dp"

                android:layout_marginStart="20dp"

                android:layout_marginEnd="20dp"

                android:layout_marginBottom="5dp"

                android:background="@color/colorPrimary"

                android:text="SAVE"

                android:textSize="18dp"

                android:textColor="@color/putihmenu"/>



            <Button

                android:id="@+id/cancel"

                android:layout_width="match_parent"

                android:layout_height="50dp"

                android:layout_marginTop="5dp"

                android:layout_marginStart="20dp"

                android:layout_marginEnd="20dp"

                android:layout_marginBottom="20dp"

                android:background="@color/colorAccent"

                android:text="BACK"

                android:textSize="18dp"

                android:textColor="@color/putihmenu"/>



        </LinearLayout>



    </ScrollView>



</RelativeLayout>

Hasilnya sebagai berikut

Menambahkan aksi pada adminaddcategory.java untuk menyimpan data kategori baru ke database
Deklarasi variable.
EditText txtcat;

Button cancel, save;

Menginisiasi variabel diatas
@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_adminaddcategory);



    txtcat = findViewById(R.id.textCategory);



    cancel = findViewById(R.id.cancel);

    cancel.setOnClickListener(this);



    save = findViewById(R.id.savecat);

    save.setOnClickListener(this);

}

Aksi onclick ketika button simpan diklik maka data yang diinputkan akan disimpan ke database.
@Override

public void onClick(View view) {

    if(view.getId() == R.id.cancel){

        finish();

    }else if(view.getId() == R.id.savecat){

        DbConnection db = DbConnection.getDatabase(getApplicationContext());

        KategoriDao dao = db.kategoriDao();



        String nama_kategori = this.txtcat.getText().toString();



        Kategori kat = new Kategori();



        kat.setNama(nama_kategori);

        dao.save(kat);



        Toast.makeText(getApplicationContext(), "Kategori "+nama_kategori+ " sukses disimpan !", Toast.LENGTH_SHORT).show();

        System.out.println(kat.getNama() + " | SAVED");



        finish();

    }

}

23. Membuat activity_admineditcategory.xml untuk halaman edit dan hapus kategori
<?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"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".controller.admineditcategory">



    <ImageView

        android:layout_width="wrap_content"

        android:layout_height="match_parent"

        android:layout_marginTop="-1300dp"

        android:layout_marginStart="-100dp"

        android:src="@drawable/kotak_men"/>



    <TextView

        android:id="@+id/judul"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginTop="15dp"

        android:layout_marginStart="15dp"



        android:textColor="@color/colordark"

        android:textSize="40dp"

        android:text="Category"/>



    <TextView

        android:id="@+id/texttitle"

        android:layout_below="@id/judul"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginTop="50dp"

        android:layout_marginStart="20dp"

        android:layout_marginBottom="120dp"

        android:text="ADD NEW CATEGORY"

        android:textColor="@color/colordark"

        android:textSize="15dp"/>



    <EditText

        android:id="@+id/textCategory"

        android:layout_below="@id/texttitle"

        android:layout_width="match_parent"

        android:layout_height="60dp"

        android:layout_margin="20dp"

        android:hint="Enter Category Here"/>



    <Button

        android:id="@+id/updatecat"

        android:layout_below="@id/textCategory"

        android:layout_width="match_parent"

        android:layout_height="60dp"

        android:layout_marginTop="20dp"

        android:layout_marginStart="20dp"

        android:layout_marginEnd="20dp"

        android:background="@color/colorPrimary"

        android:text="UPDATE"

        android:textSize="18dp"

        android:textColor="@color/putihmenu"/>



    <Button

        android:id="@+id/deletecat"

        android:layout_below="@id/updatecat"

        android:layout_width="match_parent"

        android:layout_height="60dp"

        android:layout_marginTop="10dp"

        android:layout_marginStart="20dp"

        android:layout_marginEnd="20dp"

        android:background="@color/colorAccent"

        android:text="DELETE"

        android:textSize="18dp"

        android:textColor="@color/putihmenu"/>



    <Button

        android:id="@+id/cancel"

        android:layout_below="@id/deletecat"

        android:layout_width="match_parent"

        android:layout_height="60dp"

        android:layout_marginTop="10dp"

        android:layout_marginStart="20dp"

        android:layout_marginEnd="20dp"

        android:background="@color/cardview_shadow_start_color"

        android:text="BACK"

        android:textSize="18dp"/>



</RelativeLayout>

Hasilnya adalah sebagai berikut

Menambahkan aksi pada admineditcategory.java untuk edit dan hapus data kategori.
Deklarasi variable.
Button update, delete, cancel;

EditText txtcat;

private String id, nama;

Inisiasi variabel dengan layout
@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_admineditcategory);



    txtcat = findViewById(R.id.textCategory);



    update = findViewById(R.id.updatecat);

    update.setOnClickListener(this);



    delete = findViewById(R.id.deletecat);

    delete.setOnClickListener(this);



    cancel = findViewById(R.id.cancel);

    cancel.setOnClickListener(this);



    Intent intent = getIntent();



    id = intent.getStringExtra(admincategory.TAG_ID);

    nama = intent.getStringExtra(admincategory.TAG_NAMA);



    txtcat.setText(nama);

}

Membuat fungsi onclick
@Overridepublic void onClick(View view) {
    DbConnection db = DbConnection.getDatabase(getApplicationContext());    KategoriDao dao = db.kategoriDao();
    if(view.getId() == R.id.cancel){
        finish();    }else if(view.getId() == R.id.updatecat){
        int id_kategori = Integer.parseInt(id);        String nama_kategori = this.txtcat.getText().toString();
        Kategori kategori = new Kategori();        kategori.setId(id_kategori);        kategori.setNama(nama_kategori);
        dao.update(kategori);
        Toast.makeText(getApplicationContext(), "Update Sukses", Toast.LENGTH_SHORT).show();        System.out.println(kategori.getId()+ " | " +kategori.getNama()+ " | UPDATED" );
        finish();    }else if(view.getId() == R.id.deletecat){
        int id_kategori = Integer.parseInt(id);
        Kategori kategori = new Kategori();
        kategori.setId(id_kategori);        dao.delete(kategori);
        Toast.makeText(getApplicationContext(), "Kategori berhasil dihapus", Toast.LENGTH_SHORT).show();        System.out.println(kategori.getId()+ " | " +kategori.getNama()+ " | DELETED" );
        finish();    }
}

24. Untuk membuat CRUD Produk lakukan langkah yang sama seperti pembuatan CRUD kategori, dengan memulainya dari point 21.


Sekian Tutorial yang Kami Buat. Semoga Dapat Bermanfaat Bagi Kita Semua

Komentar

  1. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  2. Halo kak, terimakasih artikelnya... ini sangat membantu saya dalam menyelesaikan tugas kuliah saya. oh ya kak, perkenalkan nama saya Nurhamimah dan jangan lupa kunjungi website kampus saya ISB Atma Luhur

    BalasHapus

Posting Komentar