Membuat Aplikasi CRUD Sederhana Dengan Android Studio

Membuat Aplikasi CRUD Sederhana Dengan Android Studio

Membuat Aplikasi CRUD Sederhana Dengan Android Studio
Membuat Aplikasi CRUD Sederhana Dengan Android Studio

Halo sobat ruangcoder, artikel kali ini tentang Membuat Aplikasi CRUD Sederhana Dengan Android Studio dan MySQL. Yang dimana kali ini admin akan membuat aplikasi  CRUD Android  sederhana dengan MySQL database. CRUD (Create , Read , Update , dan Delete) merupakan istilah lain yang dalam hal interaksi antara aplikasi dengan data. Membuat, membaca , memperbarui maupun menghapus merupakan beberapa proses yang ada di setiap aplikasi yang terkoneksi / terhubung dengan database. Nah sobat, pada artikel kali ini admin  akan bahas lebih lanjut pembuatan aplikasi android menggunakan database MySQL. Aplikasi yang akan sobat buat kali ini adalah aplikasi yang mengatur data sebuah siswa di kelas.

Bagi sobat ruangcoder yang masih belajar android CRUD (Create , Read , Update , dan Delete) merupakan metode yang mudah untuk memahami suatu bahasa pemrograman termasuk java android. Dimana metode CRUD merupakan skill basic / dasar yang harus disiapkan sobat ruangcoder dalam membuat sebuah aplikasi. Karena suatu aplikasi yang kompleks pasti berurusan dengan yang disebut database. Tentu setiap aplikasi yang sobat buat / kembangkan, sobat berharap bahwa suatu saat aplikasi tersebut yang akan menjadi aplikasi yang ‘kompleks’ juga. Maka dari itu, setelah mempelajari sintaks – sintaks dasar suatu bahasa pemrograman sobat harus mempelajari alur transaksi data (CRUD) aplikasi ke database.

Sebelum lanjut, admin sarankan sobat ruangcoder memahami salah satu library yang akan sobat gunakan disini yaitu Fast Android Networking supaya tidak bingung sintaks penggunaannya.

Tutorial Membuat Aplikasi CRUD Sederhana Dengan Android Studio dan Database MYSQL


Untuk membuat sebuah  aplikasi android studio agar terhubung dengan database mysql, sobat membutuhkan yang namanya REST API.  Apa itu REST API (Representional State Transfer). REST API adalah suatu arsitektur komunikasi data menggunakan suatu protokol HTTP untuk menerima dan merespon (request dan response) data.

Singkatnya, API itu sebagai jembatan yang menghubungkan sebuah aplikasi dengan aplikasi lainnya. Nah jadi sobat ruangcoder, pada tutorial kali ini sobat akan membuat suatu API menggunakan bahasa pemrograman PHP. Jadi pada kasus ini sobat akan menghubungkan Android dengan PHP sebagai server sidenya,

Umumnya ada 4 metode HTTP yaitu :
  1. GET
  2. POST
  3. PUT
  4. DELETE

Menyiapkan sebuah Database

Sebelum sobat masuk ke dalam tahap selanjutnya dalam pembuatan API server dan Aplikasi Android di android studio. Pertama – tama mari sobat siapkan database beserta table yang akan sobat gunakan di tutorial kali ini.

Buatlah sebuah database baru dengan nama db_siswa

Kemudian ke menu SQL dan paste kode di bawah untuk membuat table baru bernama tb_siswa beserta data - data nya

.

-- phpMyAdmin SQL Dump
-- version 4.5.2
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Feb 05, 2020 at 04:46 AM
-- Server version: 5.5.64-MariaDB-1ubuntu0.14.04.1
-- PHP Version: 5.6.23
 
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
 
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
 
--
-- Database: `db_siswa`
--
 
-- --------------------------------------------------------
 
--
-- Table structure for table `tb_siswa`
--
 
CREATE TABLE `tb_siswa` (
  `noinduk` int(5) NOT NULL,
  `nama` varchar(50) DEFAULT NULL,
  `alamat` varchar(100) DEFAULT NULL,
  `hobi` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
--
-- Dumping data for table `tb_siswa`
--
 
INSERT INTO `tb_siswa` (`noinduk`, `nama`, `alamat`, `hobi`) VALUES
(1, 'RuangCoder', 'Jalan Raja Joglo', 'Ngopi'),
(2, 'Ruang Coder Ex', 'Jalan Raya Joglo', 'Mancing');
 
--
-- Indexes for dumped tables
--
 
--
-- Indexes for table `tb_siswa`
--
ALTER TABLE `tb_siswa`
  ADD UNIQUE KEY `noinduk` (`noinduk`);
 
--
-- AUTO_INCREMENT for dumped tables
--
 
--
-- AUTO_INCREMENT for table `tb_siswa`
--
ALTER TABLE `tb_siswa`
  MODIFY `noinduk` int(5) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Kemudian sobat , insert data nya , minimal 2 biar lebih terlihat rapih nantinya , seperti gambar dibawah ini :

Isi data minimal 2 , kemudian sesudah di isi , di go / save aja , no induk kosongin karena auto increment 

Nah minimal dua lah ya , pengisian data nya 

Menyiapkan API Server :

Kalau tadi admin sudah dijelaskan apa itu Restful API. Maka, mari langsung sobat buat saja API Servernya. API server merupakan direktori yang nantinya diletakkan di web server untuk menaruh endpoint / api yang akan sobat buat. dan letakkan di folder :

Langkah 1 : Buat nama folder ap-ruangcoder , dan letakkan di local server kalian seperti di kotak merah, kalo kalian di  local disk (D) ya sesuaikan saja

Langkah 2 : Drag and Drop folder yang kita buat di langkah 1 , gunakan text editor yang kalian sukai , admin make sublime, dan buat file PHP seperti di gambar

Disini admin menamai direktori admin api-ruangcoder. Kemudian sobat buat  5 file php dengan nama (sesuai gambar di atas) antara lain :

koneksi.php , untuk mengatur sebuah koneksi PHP sobat ke database MySQL
getData.php, yaitu berisi API Select data dari database sobat.
tambahSiswa.php, berisi API untuk menambahkan data ke database.
deleteSiswa.php, berisi API untuk menghapus data dari database.
updateSiswa.php, berisi API untuk melakukan update data di database.

Kalau sudah mari sobat isi ke-lima file tersebut,

Yang pertama isi file Koneksi.php dengan code berikut :
Catatan : Lebih baik jangan langsung di copas ya , latihan mengetik manual , biar sembari baca codingannya , dan kalau ada error bisa benerin sendiri , jadi latihan dulu , kalo dah stuck adanya error , silahkan bandingkan codingan sobat dengan ini , jadi apa yang kurang , biar bisa lancar ngodingnya, oke lanjut


<?php 
$hostname = 'localhost';
$username = 'root';
$password = '';
$database = 'db_siswa';
 
$conn = mysqli_connect($hostname,$username,$password,$database);
if(!$conn){
    echo "gagal";
}
 
 
 
?>

Di koneksi.php sobat mendeklarasikan sebuah hostname,username,password, dari database sobat. Sesuaikan dengan konfigurasi phpmyadmin / mysql sobat ya. Tetapi, untuk variabel database tetap diisi db_siswa.

Kedua isi file getData.php

<?php 
include('koneksi.php'); //jangan lupa untuk include koneksi.php 
 
$sql = "SELECT * FROM tb_siswa";
 
$query = mysqli_query($conn,$sql);
 
if(mysqli_num_rows($query) > 0){
    while($row = mysqli_fetch_object($query)){
        $data['status'] = true;
        $data['result'][] = $row;
 
        // $data2 = respond(true, $row);
    }
}else{
    $data['status'] = false;
    $data['result'][] = "Data not Found";
}
print_r(json_encode($data));
?>

Nah sobat pada getData.php berfungsi untuk mengambil / select data dari table tb_siswa kemudian di encode sebagai json. Bagi sobat yang sudah pernah mencoba query sql dasar seharusnya sobat tidak akan bingung ya dengan query di atas.

Ketiga isi file tambahSiswa.php

<?php
 
include('koneksi.php');
 
$nama       = $_POST['nama']; //menangkap nama dari post
$noinduk    = $_POST['noinduk']; //menangkap noinduk dari post
$alamat     = $_POST['alamat'];//menangkap alamat dari post
$hobi       = $_POST['hobi'];//menangkap hobi dari post
 
if(!empty($nama) &amp;&amp; !empty($noinduk)){
 
    $sqlCheck = "SELECT COUNT(*) FROM tb_siswa WHERE noinduk='$noinduk' AND nama='$nama'";
    $queryCheck = mysqli_query($conn,$sqlCheck);
    $hasilCheck = mysqli_fetch_array($queryCheck);
    if($hasilCheck[0] == 0){
        $sql = "INSERT INTO tb_siswa (nama,noinduk,alamat,hobi) VALUES('$nama','$noinduk','$alamat','$hobi')";
 
        $query = mysqli_query($conn,$sql);
 
        if(mysqli_affected_rows($conn) > 0){
            $data['status'] = true;
            $data['result'] = "Berhasil";
        }else{
            $data['status'] = false;
            $data['result'] = "Gagal";
        }
    }else{
        $data['status'] = false;
        $data['result'] = "Gagal, Data Sudah Ada";
    }
 
     
 
}
else{
    $data['status'] = false;
    $data['result'] = "Gagal, Nomor Induk dan Nama tidak boleh kosong!";
}
 
 
print_r(json_encode($data));
 
 
 
 
?>

Sesuai namanya, dimana fungsi api tambahSiswa.php berfungsi untuk menambah data siswa ke database. Data siswa yang nanti diperoleh (noinduk,nama,alamat,dan hobi) berasal dari sebuah aplikasi android yang akan sobat buat setelah ini.

Ke empat isi file updateSiswa.php

<?php
 
include('koneksi.php');
 
$nama       = $_POST['nama'];
$noinduk    = $_POST['noinduk'];
$alamat     = $_POST['alamat'];
$hobi       = $_POST['hobi'];
 
if(!empty($nama) &amp;&amp; !empty($noinduk)){
 
    $sql = "UPDATE tb_siswa set nama='$nama', alamat='$alamat', hobi='$hobi' WHERE noinduk='$noinduk' ";
 
    $query = mysqli_query($conn,$sql);
 
    if(mysqli_affected_rows($conn) > 0){
        $data['status'] = true;
        $data['result'] = "Berhasil";
    }else{
        $data['status'] = false;
        $data['result'] = "Gagal";
    }
 
}else{
    $data['status'] = false;
    $data['result'] = "Gagal, Nomor Induk dan Nama tidak boleh kosong!";
}
 
 
print_r(json_encode($data));
 
 
 
 
?>

Nah sobat fungsi API ini untuk mengupdate / memperbarui data siswa dari table tb_siswa yang ada didatabse.

Ke lima isi file deleteSiswa.php

<?php
 
include('koneksi.php');
 
$noinduk = $_POST['noinduk'];
 
if(!empty($noinduk)){
    $sql = "DELETE FROM tb_siswa WHERE noinduk='$noinduk' ";
 
    $query = mysqli_query($conn,$sql);
 
    $data['status'] = true;
    $data['result'] = 'Berhasil';
}else{
    $data['status'] = false;
    $data['result'] = 'Gagal';
}
 
print_r(json_encode($data));
 
 
?>
Dari namanya saja sobat sudah tentu tau lah ya , fungsi dari API ini untuk menghapus dari dari tb_siswa yang ada didatabase. Yap sobat, sampai sini ke-lima API kita sudah berhasil dibuat dan artinya API server sobat sudah siap!. Artinya juga, kita bisa lanjut masuk ke dalam tahap selanjutnya di android studio. Sekarang, buka android studio kalian.

Kita lanjut masuk ke pembuatan Aplikasi nya , karena kita sudah selesai , membuat API server nya ,
Silahkan sobat buka Android Studi Sobat masing - masing, disini admin menamakan aplikasinya crud-ruangcoder.

Langkah 1 : Buka Android Studio , kemudian klik Start A new Android Studio project
Langkah 2 : Pilih Empty Activity dan Next saja 
Langkah 3 : Buat nama aplikasi sobat , dan langsung finish , kemudian tunggu gradlenya selesai synch

Kemudian sobat Siapkan Dependencies / Libraries
Aplikasi android kali ini sobat akan menggunakan library untuk berbagai keperluan, antara lain.

RecyclerView, sebagai wadah untuk data.
CardView, sebagai wadah view recyclerview.
Rengwuxian EditText , library untuk mempercantik tampilan EditText.
Fast Android Networking, library untuk mengatur segala HTTP request (GET dan POST)
yang akan digunakan untuk mengakses API Server yang sudah kita buat tadi .
Masuk ke build.gradle, kemudian masukkan kode di bawah kemudian Sync Now untuk mendownload dependencies ke dalam projek.

Kemudian sobat masuk ke build.gradle (module: app) kemudian masukkan kode di bawah kemudian Sync Now untuk mendownload dependencies ke dalam projek dan tunggu sync sampai selesai dulu sobat.



implementation 'com.amitshekhar.android:android-networking:1.0.2'
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.rengwuxian.materialedittext:library:2.1.4'

Atur AndroidManifest.xml sobat Di android manifest sobat akan menambahkan permission internet pada aplikasi sobat. Tambahkan kode di bawah untuk memberikan permission internet ke aplikasi yang akan sobat buat :


<uses-permission android:name="android.permission.INTERNET" />

Ubah Codingan Layout Activity Main.xml :

Sekali lagi admin ingetin , sobat mending ngetik sendiri dulu , jangan langsung copas , belajar nya , biar gampang paham , kalo error baru di sandingkan source code sobat , dengan source code admin

Nah ini tampilan dan code nya default dari Android jadi bawaan nya , silahkan sobat ganti , dengan kode dibawah


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/srl_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv_main"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
 
            </android.support.v7.widget.RecyclerView>
        </android.support.v4.widget.NestedScrollView>
    </android.support.v4.widget.SwipeRefreshLayout>
 
</LinearLayout>

Nah sekarang sobat buat Layout baru , yaitu untuk RecyclerView

Sobat tinggal buat file baru di layout yaitu dengan cara sobat Klik Kanan pada Layout -> New -> Layout Resource File.

Kemudian isi kan file tersebut dengan kode dibawah ini :


<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cv_main"
    app:cardElevation="5dp"
    android:layout_margin="5dp"
    android:clickable="true"
    android:longClickable="true"
    android:foreground="?android:selectableItemBackground">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_margin="5dp">
        <ImageView
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:src="@drawable/ic_launcher_background"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:gravity="center_vertical">
            <TextView
                android:id="@+id/tv_noind"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Nomor induk"/>
            <TextView
                android:id="@+id/tv_nama"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Nama"/>
            <TextView
                android:id="@+id/tv_alamat"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Alamat"/>
            <TextView
                android:id="@+id/tv_hobi"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Hobi"/>
        </LinearLayout>
    </LinearLayout>
 
 
</android.support.v7.widget.CardView>



Ini hasilnya , silahkan teman - teman kreasikan sendiri , untul ganti icon , itu ada pada bagian @drawable/smile

Membuat RecyclerViewAdapter 

Dimana yang berguna ntuk menampilkan data di RecyclerView, sobat memerlukan sebuah adapter. Dan adapter ini berfungsi untuk menghubungkan suatu data yang masuk , ke dalam template_rv.xml yang sudah sobat buat sebelumnya.


Dan data yang ada di adapter ini berasal dari ActivityMain yang didapat dari API yang sudah sobat buat.

Buat file baru di folder java, dan beri nama sesuai yang ada di gambar, kemudian isi dengan kode dibawah :
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
 
import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.JSONObjectRequestListener;
 
import org.json.JSONObject;
 
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Handler;
 
public class RecycleViewAdapter extends RecyclerView.Adapter {
 
    private Context mContext;
    private ArrayList array_noinduk,array_nama,array_alamat,array_hobi;
    ProgressDialog progressDialog;
 
    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView tv_noind,tv_nama,tv_alamat,tv_hobi;
        public CardView cv_main;
 
        public MyViewHolder(View view) {
            super(view);
            cv_main = itemView.findViewById(R.id.cv_main);
            tv_noind = itemView.findViewById(R.id.tv_noind);
            tv_nama = itemView.findViewById(R.id.tv_nama);
            tv_alamat = itemView.findViewById(R.id.tv_alamat);
            tv_hobi = itemView.findViewById(R.id.tv_hobi);
 
            progressDialog = new ProgressDialog(mContext);
        }
    }
 
    public RecycleViewAdapter(Context mContext, ArrayList array_noinduk,ArrayList array_nama,ArrayList array_alamat,ArrayList array_hobi) {
        super();
        this.mContext = mContext;
        this.array_noinduk = array_noinduk;
        this.array_nama = array_nama;
        this.array_alamat = array_alamat;
        this.array_hobi = array_hobi;
    }
 
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
        View itemView = layoutInflater.inflate(R.layout.template_rv,parent,false);
        return new RecycleViewAdapter.MyViewHolder(itemView);
    }
 
    @Override
    public void onBindViewHolder(MyViewHolder holder, final int position) {
        holder.tv_noind.setText(array_noinduk.get(position));
        holder.tv_nama.setText(array_nama.get(position));
        holder.tv_alamat.setText(array_alamat.get(position));
        holder.tv_hobi.setText(array_hobi.get(position));
        holder.cv_main.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(mContext,Activity_Edit.class);
                i.putExtra("noinduk",array_noinduk.get(position));
                i.putExtra("nama",array_nama.get(position));
                i.putExtra("alamat",array_alamat.get(position));
                i.putExtra("hobi",array_hobi.get(position));
                ((Activity_Main)mContext).startActivityForResult(i,2);
            }
        });
        holder.cv_main.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                new AlertDialog.Builder((Activity_Main)mContext)
                        .setMessage("Ingin menghapus nomor induk "+array_noinduk.get(position)+" ?")
                        .setCancelable(false)
                        .setPositiveButton("Ya", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                progressDialog.setMessage("Menghapus...");
                                progressDialog.setCancelable(false);
                                progressDialog.show();
 
                                AndroidNetworking.post("http://192.168.43.161/api-ruangcoder/deleteSiswa.php")
                                        .addBodyParameter("noinduk",""+array_noinduk.get(position))
                                        .setPriority(Priority.MEDIUM)
                                        .build()
                                        .getAsJSONObject(new JSONObjectRequestListener() {
                                            @Override
                                            public void onResponse(JSONObject response) {
                                                progressDialog.dismiss();
                                                try {
                                                    Boolean status = response.getBoolean("status");
                                                    Log.d("statuss",""+status);
                                                    String result = response.getString("result");
                                                    if(status){
                                                        if(mContext instanceof Activity_Main){
                                                            ((Activity_Main)mContext).scrollRefresh();
                                                        }
                                                    }else{
                                                        Toast.makeText(mContext, ""+result, Toast.LENGTH_SHORT).show();
                                                    }
                                                }catch (Exception e){
                                                    e.printStackTrace();
                                                }
                                            }
 
                                            @Override
                                            public void onError(ANError anError) {
                                                anError.printStackTrace();
                                            }
                                        });
                            }
                        })
                        .setNegativeButton("Tidak", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.cancel();
                            }
                        })
                        .show();
                return false;
            }
        });
 
    }
 
    @Override
    public int getItemCount() {
        return array_noinduk.size();
    }
}

Sebelumnya sobat silahkan, Sesuaikan http://192.168.43.161/api-ruangcoder/ dengan direktori API Server sobat. yang dimana nantinya Kode di atas digunakan untuk sobat mengakses API deleteSiswa.php melalui fungsi onLongClickListener dari CardView. Itu artinya jika sobat menekan lama cardview maka akan muncul sebuah notif untuk menghapus data / tidak. Dan gimana sih cara mendapatkan IP nya , silahkan sobat lihat gambar dibawah :

Catatan : Disini perlu sobat ingat , karena kita menggunakan local server , maka tutorial ini hanya bisa di akses menggunakan emulator di Android Studio , jika sobat menggunakan debugg di Android sobat , lebih baik untuk folder codingan PHP , sobat upload di hosting ( jika belum mengerti untuk upload hosting silahkan sobat komentar , jika memang banyak peminat nya , admin akan buatin tutorial nya ).

Langkah 1 : Kombinasi Logo Windows + R , jika muncul ketikkan CMD dan Enter / Klik OK

Langkah 2 : Saat terbuka jendela CMD , ketikkan ipconfig , dan ingat IP nya , yang IPv4 Address 
Langkah 3 : Ketikkan IP tadi di browser sobat , dan /namafolder , kemudian setelah terbuka , di COPY , tinggal di ganti deh yang pada langkah sebelumnya di RecylerViewAdapter nya

Mengubah MainAcvitivy.java

Nah , sekarang sobat udah codingan MainActivity.java sobat , karena masih default bawaan dari Android Studio nya

Untuk Error , diabaikan , karena kita belum membuat file yang dituju , nanti di langkah selanjutnya , silahkan ubah kodenya defaultnya , dengan kode dibawah ini


package com.example.pkl.crudruangcoder;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.JSONObjectRequestListener;

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    SwipeRefreshLayout srl_main;
    RecyclerView rv_main;
    ArrayList array_nama,array_noinduk,array_alamat,array_hobi;
    ProgressDialog progressDialog;

    RecycleViewAdapter recycleViewAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        srl_main    = findViewById(R.id.srl_main);
        rv_main     = findViewById(R.id.rv_main);
        progressDialog = new ProgressDialog(this);

        rv_main.hasFixedSize();
        LinearLayoutManager layoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
        rv_main.setLayoutManager(layoutManager);


        srl_main.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                scrollRefresh();
                srl_main.setRefreshing(false);
            }
        });

        scrollRefresh();
    }

   public void scrollRefresh(){
        progressDialog.setMessage("Mengambil Data.....");
        progressDialog.setCancelable(false);
        progressDialog.show();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                getData();
            }
        },1200);
    }

    void initializeArray(){
        array_noinduk = new ArrayList();
        array_nama = new ArrayList();
        array_alamat = new ArrayList();
        array_hobi = new ArrayList();

        array_noinduk.clear();
        array_nama.clear();
        array_alamat.clear();
        array_hobi.clear();
    }

    public void getData(){
        initializeArray();
        AndroidNetworking.get("http://192.168.43.161/api-ruangcoder/getData.php")
                .setTag("Get Data")
                .setPriority(Priority.MEDIUM)
                .build()
                .getAsJSONObject(new JSONObjectRequestListener() {
                    @Override
                    public void onResponse(JSONObject response) {
                        progressDialog.dismiss();

                        try{
                            Boolean status = response.getBoolean("status");
                            if(status){
                                JSONArray ja = response.getJSONArray("result");
                                Log.d("respon",""+ja);
                                for(int i = 0 ; i < ja.length() ; i++){
                                    JSONObject jo = ja.getJSONObject(i);

                                    array_noinduk.add(jo.getString("noinduk"));
                                    array_nama.add(jo.getString("nama"));
                                    array_alamat.add(jo.getString("alamat"));
                                    array_hobi.add(jo.getString("hobi"));
                                }
                                recycleViewAdapter = new RecycleViewAdapter(MainActivity.this,array_noinduk,array_nama,array_alamat,array_hobi);
                                rv_main.setAdapter(recycleViewAdapter);
                            }else{
                                Toast.makeText(MainActivity.this, "Gagal Mengambil Data", Toast.LENGTH_SHORT).show();
                                recycleViewAdapter = new RecycleViewAdapter(MainActivity.this,array_noinduk,array_nama,array_alamat,array_hobi);
                                rv_main.setAdapter(recycleViewAdapter);
                            }
                        }
                        catch (Exception e){
                            e.printStackTrace();
                        }

                    }

                    @Override
                    public void onError(ANError anError) {

                    }
                });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menutambah,menu);
        return super.onCreateOptionsMenu(menu);
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if(id==R.id.menu_add){
            Intent i = new Intent(MainActivity.this,Activity_Add.class);
            startActivityForResult(i,1);
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==1){
            if(resultCode==RESULT_OK){
                scrollRefresh();
            }else if(resultCode==RESULT_CANCELED){
                Toast.makeText(this, "Canceled", Toast.LENGTH_SHORT).show();
            }
        }

        if(requestCode==2){
            if(resultCode==RESULT_OK){
                scrollRefresh();
            }else if(resultCode==RESULT_CANCELED){
                Toast.makeText(this, "Canceled", Toast.LENGTH_SHORT).show();
            }
        }
    }
}


Kemudian sobat sesuaikan pada http://192.168.43.161/api-ruangcoder/getData.php , dengan IP dan nama folder sobat tentunya

Membuat Activity_Add.java

Kemudian sobat buat file baru lagi , di folder java , dengan nama file nya tersebut yaitu Activity_Add.java


Kemudian setelah dibuat , sobat tinggal paste , kode dibawah ini , untuk di letakkan di Activity_Add

package com.example.pkl.crudruangcoder;

import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.JSONObjectRequestListener;

import org.json.JSONObject;

public class Activity_Add extends AppCompatActivity {

    com.rengwuxian.materialedittext.MaterialEditText et_noinduk,et_nama,et_alamat,et_hobi;
    String noinduk,nama,alamat,hobi;
    Button btn_submit;
    ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);

        et_noinduk          = findViewById(R.id.et_noinduk);
        et_nama             = findViewById(R.id.et_nama);
        et_alamat           = findViewById(R.id.et_alamat);
        et_hobi             = findViewById(R.id.et_hobi);
        btn_submit          = findViewById(R.id.btn_submit);

        progressDialog      = new ProgressDialog(this);

        btn_submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progressDialog.setMessage("Menambahkan Data...");
                progressDialog.setCancelable(false);
                progressDialog.show();

                noinduk = et_noinduk.getText().toString();
                nama = et_nama.getText().toString();
                alamat = et_alamat.getText().toString();
                hobi = et_hobi.getText().toString();

                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        validasiData();
                    }
                },1000);
            }
        });

    }

    void validasiData(){
        if(noinduk.equals("") || nama.equals("") || alamat.equals("") || hobi.equals("")){
            progressDialog.dismiss();
            Toast.makeText(Activity_Add.this, "Periksa kembali data yang anda masukkan !", Toast.LENGTH_SHORT).show();
        }else {
            kirimData();
        }
    }

    void kirimData(){
        AndroidNetworking.post("http://192.168.43.161/api-ruangcoder/tambahSiswa.php") //sesuaikan dengan api server kalian
                .addBodyParameter("noinduk",""+noinduk)
                .addBodyParameter("nama",""+nama)
                .addBodyParameter("alamat",""+alamat)
                .addBodyParameter("hobi",""+hobi)
                .setPriority(Priority.MEDIUM)
                .setTag("Tambah Data")
                .build()
                .getAsJSONObject(new JSONObjectRequestListener() {
                    @Override
                    public void onResponse(JSONObject response) {
                        progressDialog.dismiss();
                        Log.d("cekTambah",""+response);
                        try {
                            Boolean status = response.getBoolean("status");
                            String pesan = response.getString("result");
                            Toast.makeText(Activity_Add.this, ""+pesan, Toast.LENGTH_SHORT).show();
                            Log.d("status",""+status);
                            if(status){
                                new AlertDialog.Builder(Activity_Add.this)
                                        .setMessage("Berhasil Menambahkan Data !")
                                        .setCancelable(false)
                                        .setPositiveButton("Kembali", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                Intent i = getIntent();
                                                setResult(RESULT_OK,i);
                                                Activity_Add.this.finish();
                                            }
                                        })
                                        .show();
                            }
                            else{
                                new AlertDialog.Builder(Activity_Add.this)
                                        .setMessage("Gagal Menambahkan Data !")
                                        .setPositiveButton("Kembali", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                Intent i = getIntent();
                                                setResult(RESULT_CANCELED,i);
                                                Activity_Add.this.finish();
                                            }
                                        })
                                        .setCancelable(false)
                                        .show();
                            }
                        }catch (Exception e){
                            e.printStackTrace();
                        }


                    }

                    @Override
                    public void onError(ANError anError) {
                        Log.d("ErrorTambahData",""+anError.getErrorBody());
                    }
                });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_back,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if(id==R.id.menu_back){
            this.finish();
        }
        return super.onOptionsItemSelected(item);
    }
}

Catatan : untuk setiap kode ini package com.example.pkl.crudruangcoder; silahkan sesuaikan dengan package kalian , jadi admin sarankan ngetik manual dulu , kalau mau copas , dari bagian import aja sampai kebawah. dan setelah membuat Activity_Add.java tentunya sekarang kita akan membuat Activity_Add.xml tentunya.

Membuat activity_add xml


Buat file baru di folder res -> layout dan beri nama activity_add.xml kemudian isi dengan kode dibawah ini


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Activity_Add"
    android:orientation="vertical">
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="20dp"
        android:orientation="vertical">
 
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Tambah Data Siswa"
            android:textAlignment="center"
            android:textAppearance="?android:textAppearanceLarge"
            android:textColor="#000" />
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp"
            android:orientation="horizontal"
            android:weightSum="6">
            <ImageView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:padding="10dp"
                android:layout_height="match_parent"
                android:src="@drawable/ic_local_activity_black_24dp"/>
            <com.rengwuxian.materialedittext.MaterialEditText
                android:id="@+id/et_noinduk"
                android:layout_weight="5"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="Nomor Induk"
                app:met_floatingLabel="normal"/>
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:orientation="horizontal"
            android:weightSum="6">
            <ImageView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:padding="10dp"
                android:layout_height="match_parent"
                android:src="@drawable/ic_local_activity_black_24dp"/>
            <com.rengwuxian.materialedittext.MaterialEditText
                android:id="@+id/et_nama"
                android:layout_weight="5"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="Nama"
                app:met_floatingLabel="normal"/>
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:orientation="horizontal"
            android:weightSum="6">
            <ImageView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:padding="10dp"
                android:layout_height="match_parent"
                android:src="@drawable/ic_local_activity_black_24dp"/>
            <com.rengwuxian.materialedittext.MaterialEditText
                android:id="@+id/et_alamat"
                android:layout_weight="5"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="Alamat"
                app:met_floatingLabel="normal"/>
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:orientation="horizontal"
            android:weightSum="6">
            <ImageView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:padding="10dp"
                android:layout_height="match_parent"
                android:src="@drawable/ic_local_activity_black_24dp"/>
            <com.rengwuxian.materialedittext.MaterialEditText
                android:id="@+id/et_hobi"
                android:layout_weight="5"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="Hobi"
                app:met_floatingLabel="normal"/>
        </LinearLayout>
 
        <Button
            android:id="@+id/btn_submit"
            android:layout_marginTop="20dp"
            android:layout_width="120dp"
            android:layout_height="50dp"
            android:layout_gravity="center"
            android:drawableStart="@drawable/ic_present_to_all_black_24dp"
            android:text="Submit"
            android:textAllCaps="false"/>
    </LinearLayout>
</LinearLayout>

Dan ini hasilnya , silahkan kreasikan dengan sesuka sobat


Membuat Activity_Edit.java


Setelah sobat membuat Activity_Add.java untuk mengatur suatu proses tambah data, saatnya sobat membuat Activity_Edit.java untuk mengatur suatu proses ubah data (Dalam kasus ini yaitu data siswa).

Buat file baru di folder java dengan nama Activity_Edit , kemudian isi dengan kode dibawah ini :


package com.example.pkl.crudruangcoder;

import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.JSONObjectRequestListener;

import org.json.JSONObject;

public class Activity_Edit extends AppCompatActivity {

    com.rengwuxian.materialedittext.MaterialEditText et_noinduk,et_nama,et_alamat,et_hobi;
    String noinduk,nama,alamat,hobi;
    Button btn_submit;
    ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit);

        et_noinduk          = findViewById(R.id.et_noinduk);
        et_nama             = findViewById(R.id.et_nama);
        et_alamat           = findViewById(R.id.et_alamat);
        et_hobi             = findViewById(R.id.et_hobi);
        btn_submit          = findViewById(R.id.btn_submit);

        progressDialog      = new ProgressDialog(this);

        getDataIntent();

        btn_submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progressDialog.setMessage("Menambahkan Data...");
                progressDialog.setCancelable(false);
                progressDialog.show();

                noinduk = et_noinduk.getText().toString();
                nama = et_nama.getText().toString();
                alamat = et_alamat.getText().toString();
                hobi = et_hobi.getText().toString();

                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        validasiData();
                    }
                },1000);
            }
        });

    }

    void getDataIntent(){
        Bundle bundle = getIntent().getExtras();
        if(bundle!=null){
            et_noinduk.setText(bundle.getString("noinduk"));
            et_nama.setText(bundle.getString("nama"));
            et_alamat.setText(bundle.getString("alamat"));
            et_hobi.setText(bundle.getString("hobi"));
        }else{
            et_noinduk.setText("");
            et_nama.setText("");
            et_alamat.setText("");
            et_hobi.setText("");
        }

    }

    void validasiData(){
        if(noinduk.equals("") || nama.equals("") || alamat.equals("") || hobi.equals("")){
            progressDialog.dismiss();
            Toast.makeText(Activity_Edit.this, "Periksa kembali data yang anda masukkan !", Toast.LENGTH_SHORT).show();
        }else {
            updateData();
        }
    }

    void updateData(){
        AndroidNetworking.post("http://192.168.43.161/api-ruangcoder/updateSiswa.php")
                .addBodyParameter("noinduk",""+noinduk)
                .addBodyParameter("nama",""+nama)
                .addBodyParameter("alamat",""+alamat)
                .addBodyParameter("hobi",""+hobi)
                .setTag("Update Data")
                .setPriority(Priority.MEDIUM)
                .build()
                .getAsJSONObject(new JSONObjectRequestListener() {
                    @Override
                    public void onResponse(JSONObject response) {
                        progressDialog.dismiss();
                        Log.d("responEdit",""+response);
                        try{
                            Boolean status = response.getBoolean("status");
                            if(status){
                                new AlertDialog.Builder(Activity_Edit.this)
                                        .setMessage("Berhasil Mengupdate Data")
                                        .setCancelable(false)
                                        .setPositiveButton("Kembali", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                Intent i = getIntent();
                                                setResult(RESULT_OK,i);
                                                Activity_Edit.this.finish();
                                            }
                                        })
                                        .show();
                            }else{
                                new AlertDialog.Builder(Activity_Edit.this)
                                        .setMessage("Gagal Mengupdate Data")
                                        .setCancelable(false)
                                        .setPositiveButton("Kembali", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                Intent i = getIntent();
                                                setResult(RESULT_CANCELED,i);
                                                Activity_Edit.this.finish();
                                            }
                                        })
                                        .show();
                            }
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void onError(ANError anError) {

                    }
                });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_back,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if(id==R.id.menu_back){
            this.finish();
        }
        return super.onOptionsItemSelected(item);
    }
}

Membuat actvitiy_edit.xml :

Tentunya setelah sobat membuat activity.edit.java , sobat harus membuat activity_edit.xml nya , yuk disimak lagi dibawah ini :

Buat file baru dengan nama activity_edit.xml di folder res -> layout, kemudian isi dengan kode dibawah ini


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Activity_Add"
    android:orientation="vertical">
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="20dp"
        android:orientation="vertical">
 
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Edit Data Siswa"
            android:textAlignment="center"
            android:textAppearance="?android:textAppearanceLarge"
            android:textColor="#000" />
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp"
            android:orientation="horizontal"
            android:weightSum="6">
            <ImageView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:padding="10dp"
                android:layout_height="match_parent"
                android:src="@drawable/ic_local_activity_black_24dp"/>
            <com.rengwuxian.materialedittext.MaterialEditText
                android:id="@+id/et_noinduk"
                android:enabled="false"
                android:layout_weight="5"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="Nomor Induk"
                app:met_floatingLabel="normal"/>
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:orientation="horizontal"
            android:weightSum="6">
            <ImageView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:padding="10dp"
                android:layout_height="match_parent"
                android:src="@drawable/ic_local_activity_black_24dp"/>
            <com.rengwuxian.materialedittext.MaterialEditText
                android:id="@+id/et_nama"
                android:layout_weight="5"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="Nama"
                app:met_floatingLabel="normal"/>
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:orientation="horizontal"
            android:weightSum="6">
            <ImageView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:padding="10dp"
                android:layout_height="match_parent"
                android:src="@drawable/ic_local_activity_black_24dp"/>
            <com.rengwuxian.materialedittext.MaterialEditText
                android:id="@+id/et_alamat"
                android:layout_weight="5"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="Alamat"
                app:met_floatingLabel="normal"/>
        </LinearLayout>
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:orientation="horizontal"
            android:weightSum="6">
            <ImageView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:padding="10dp"
                android:layout_height="match_parent"
                android:src="@drawable/ic_local_activity_black_24dp"/>
            <com.rengwuxian.materialedittext.MaterialEditText
                android:id="@+id/et_hobi"
                android:layout_weight="5"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="Hobi"
                app:met_floatingLabel="normal"/>
        </LinearLayout>
 
        <Button
            android:id="@+id/btn_submit"
            android:layout_marginTop="20dp"
            android:layout_width="120dp"
            android:layout_height="50dp"
            android:layout_gravity="center"
            android:drawableStart="@drawable/ic_present_to_all_black_24dp"
            android:text="Update"
            android:textAllCaps="false"/>
    </LinearLayout>
</LinearLayout>

Dan ini hasilnya dari activity_edit.xml yang sobat buat

Dan hampir sama seperti tambah data, sobat menangkap nilai dari nama,noinduk,alamat,dan hobi setelah sobat melakukan klik pada button submit yang kemudian dilanjutkan dengan fungsi sebuah validasi data sebelum dipost ke API. Sampai sini, aplikasi sobat sudah selesai.

Silahkan build dan Run Aplikasi.

Nah jadi sampai sini dulu ya sobat ruangcoder , pada tutorial kali ini kita sudah selesai membuat sebuah aplikasi CRUD sederhana menggunakan android studio dan database mysql , apabila sobat mengalami kesulitan silahkan sobat komentar dikolom komentar , dan jangan lupa di share jika bermanfaat

Happy Codding ^_^

Anda mungkin menyukai postingan ini