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;
}
}
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
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; } }
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 ini telah dihapus oleh pengarang.
BalasHapusHalo 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