Tutorial CRUD Android Studio dengan MySQL Part #2
Assalamualaikum wr.wb
Pada tutorial kali ini, Kita akan melanjutkan tutorial yang kemarin mengenai Pembuatan CRUD Android Studio dengan Databasenya menggunakan MySQL.
Jika teman teman belum membaca artikel sebelumnya, Silahkan Kunjingi Halaman berikut ini:
Tutorial CRUD Android Studio dengan MySQL Part #1
Langkah selanjutnya silahkan teman-teman ubah script pada file MainActivity.java menjadi seperti script dibawah ini:
Pada tutorial kali ini, Kita akan melanjutkan tutorial yang kemarin mengenai Pembuatan CRUD Android Studio dengan Databasenya menggunakan MySQL.
Jika teman teman belum membaca artikel sebelumnya, Silahkan Kunjingi Halaman berikut ini:
Tutorial CRUD Android Studio dengan MySQL Part #1
Tahapan
Langsung saja, Silahkan teman - teman simak pembahasan dibawah ini:Langkah selanjutnya silahkan teman-teman ubah script pada file MainActivity.java menjadi seperti script dibawah ini:
package com.forumkoding.mycrud;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.HashMap;
/**
* Created by Muhammad Rizal Supriadi on 15/02/2020.
* forumkoding.com
*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//Dibawah ini merupakan script untuk mendefinikan View
private EditText editTextName;
private EditText editTextDesg;
private EditText editTextSal;
private Button buttonAdd;
private Button buttonView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Inisialisasi dari View
editTextName = (EditText) findViewById(R.id.editTextName);
editTextDesg = (EditText) findViewById(R.id.editTextDesg);
editTextSal = (EditText) findViewById(R.id.editTextSalary);
buttonAdd = (Button) findViewById(R.id.buttonAdd);
buttonView = (Button) findViewById(R.id.buttonView);
//Setting listeners to button
buttonAdd.setOnClickListener(this);
buttonView.setOnClickListener(this);
}
//Dibawah ini adalah script untuk Menambahkan data Pegawai (CREATE)
private void addEmployee(){
final String name = editTextName.getText().toString().trim();
final String desg = editTextDesg.getText().toString().trim();
final String sal = editTextSal.getText().toString().trim();
class AddEmployee extends AsyncTask<Void,Void,String>{
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(MainActivity.this,"Menambahkan...","Tunggu...",false,false);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
Toast.makeText(MainActivity.this,s,Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(Void... v) {
HashMap<String,String> params = new HashMap<>();
params.put(konfigurasi.KEY_EMP_NAMA,name);
params.put(konfigurasi.KEY_EMP_POSISI,desg);
params.put(konfigurasi.KEY_EMP_GAJIH,sal);
RequestHandler rh = new RequestHandler();
String res = rh.sendPostRequest(konfigurasi.URL_ADD, params);
return res;
}
}
AddEmployee ae = new AddEmployee();
ae.execute();
}
@Override
public void onClick(View v) {
if(v == buttonAdd){
addEmployee();
}
if(v == buttonView){
startActivity(new Intent(this,TampilSemuaPgw.class));
}
}
}
Untuk selantunya silahkan teman - teman buat file baru atau file xml dengan nama TampilanSemuaPgw maka secara otomatis namanya akan berubah disertai penambahan .xml jadi untuk nama lengkapnya adalah activity_tampil_semua_pgw.xml . Pada file xml ini akan kita gunakan untuk menampilkan semua data pegawai yang terdapat pada table pegawai. Setelah teman - teman selesai membuat file xml selanjutnya silahkan teman - teman ikuti kode program seperti dibawah ini:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent" android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:paddingBottom="16dp"
tools:context="com.forumkoding.mycrud.TampilSemuaPgw">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listView" />
</LinearLayout>
Dari program atau script diatas kita dapat menghasilkan suatu tampilan List View, untuk tampilannya silahkan teman - teman perhatikan gambar dibawah ini:
Karena kita telah membuat tampilan untuk menampilkan data pegawai yaitu ListView, Maka kita perlu membuat tampilan layout atau dapat dikatakan script xml nya, Untuk dapat menampilkan ListView tersebut. Silahkan teman - teman buat file xml dan berinama list_item.xml dan silahkan teman - teman ikuti kode program dibawah ini:
Karena kita telah membuat tampilan untuk menampilkan data pegawai yaitu ListView, Maka kita perlu membuat tampilan layout atau dapat dikatakan script xml nya, Untuk dapat menampilkan ListView tersebut. Silahkan teman - teman buat file xml dan berinama list_item.xml dan silahkan teman - teman ikuti kode program dibawah ini:
<?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:id="@+id/id"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Setelah kita membuat file untuk tampilan datanya yaitu file activity_tampil_semua_pgw.xml Secara otomatis file Java Class akan terbentuk dengan sendirinya dengan nama tampilSemuaPgw.java kemudian silahkan teman teman ikuti kode program dibawah ini pada file Java Class tampilSemuaPgw.java
package com.forumkoding.mycrud;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Created by Muhammad Rizal Supriadi on 15/2/2020.
* forumkoding.com
*/
public class TampilSemuaPgw extends AppCompatActivity implements ListView.OnItemClickListener{
private ListView listView;
private String JSON_STRING;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tampil_semua_pgw);
listView = (ListView) findViewById(R.id.listView);
listView.setOnItemClickListener(this);
getJSON();
}
private void showEmployee(){
JSONObject jsonObject = null;
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String, String>>();
try {
jsonObject = new JSONObject(JSON_STRING);
JSONArray result = jsonObject.getJSONArray(konfigurasi.TAG_JSON_ARRAY);
for(int i = 0; i<result.length(); i++){
JSONObject jo = result.getJSONObject(i);
String id = jo.getString(konfigurasi.TAG_ID);
String name = jo.getString(konfigurasi.TAG_NAMA);
HashMap<String,String> employees = new HashMap<>();
employees.put(konfigurasi.TAG_ID,id);
employees.put(konfigurasi.TAG_NAMA,name);
list.add(employees);
}
} catch (JSONException e) {
e.printStackTrace();
}
ListAdapter adapter = new SimpleAdapter(
TampilSemuaPgw.this, list, R.layout.list_item,
new String[]{konfigurasi.TAG_ID,konfigurasi.TAG_NAMA},
new int[]{R.id.id, R.id.name});
listView.setAdapter(adapter);
}
private void getJSON(){
class GetJSON extends AsyncTask<Void,Void,String>{
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(TampilSemuaPgw.this,"Mengambil Data","Mohon Tunggu...",false,false);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
JSON_STRING = s;
showEmployee();
}
@Override
protected String doInBackground(Void... params) {
RequestHandler rh = new RequestHandler();
String s = rh.sendGetRequest(konfigurasi.URL_GET_ALL);
return s;
}
}
GetJSON gj = new GetJSON();
gj.execute();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(this, TampilPegawai.class);
HashMap<String,String> map =(HashMap)parent.getItemAtPosition(position);
String empId = map.get(konfigurasi.TAG_ID).toString();
intent.putExtra(konfigurasi.EMP_ID,empId);
startActivity(intent);
}
}
Untuk selanjutnya kita akan membuat tampilan untuk menampilkan data pegawai yang dipilih atau diselect, maka dari itu kita akan membuat filenya dengan nama tampilPegawai, dari penamaan tersebut secara otomaris akan terbentuk file xml dengan nama activity_tampil_pegawai.xml dan selanjutnya silahkan teman - teman ikuti code program dibawah ini:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent" android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:paddingBottom="16dp" tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ID Pegawai" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextId" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nama Pegawai" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextName" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Posisi" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextDesg" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Salary" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextSalary" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update Pegawai"
android:id="@+id/buttonUpdate" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hapus Pegawai"
android:id="@+id/buttonDelete" />
</LinearLayout>
Dari script diatas maka kita dapat melihat tampilan untuk menampilkan data data dari pegawai yang kita pilih atau diselect, untuk hasilnya seperti gambar dibawah ini:
Dari file yang telah kita buat tadi mengenai tampilan untuk menampilkan data yang kita select maka secata otomatis menghasilkan file Java Class dengan nama tampilPegawai.xml untuk selanjutnya silahkan teman - teman hasil atau copy script dibawah ini yang merupakan script untuk dapat menampilkannya detail data dari ID yang kita pilih. Untuk script lengkap nya silahkan ikuti script dibawah ini kedalam file tampilPegawai.xml:
Dari file yang telah kita buat tadi mengenai tampilan untuk menampilkan data yang kita select maka secata otomatis menghasilkan file Java Class dengan nama tampilPegawai.xml untuk selanjutnya silahkan teman - teman hasil atau copy script dibawah ini yang merupakan script untuk dapat menampilkannya detail data dari ID yang kita pilih. Untuk script lengkap nya silahkan ikuti script dibawah ini kedalam file tampilPegawai.xml:
package com.forumkoding.mycrud;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
/**
* Created by Muhammad Rizal Supriadi on 15/02/2020.
* forumkoding.com
*/
public class TampilPegawai extends AppCompatActivity implements View.OnClickListener{
private EditText editTextId;
private EditText editTextName;
private EditText editTextDesg;
private EditText editTextSalary;
private Button buttonUpdate;
private Button buttonDelete;
private String id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tampil_pegawai);
Intent intent = getIntent();
id = intent.getStringExtra(konfigurasi.EMP_ID);
editTextId = (EditText) findViewById(R.id.editTextId);
editTextName = (EditText) findViewById(R.id.editTextName);
editTextDesg = (EditText) findViewById(R.id.editTextDesg);
editTextSalary = (EditText) findViewById(R.id.editTextSalary);
buttonUpdate = (Button) findViewById(R.id.buttonUpdate);
buttonDelete = (Button) findViewById(R.id.buttonDelete);
buttonUpdate.setOnClickListener(this);
buttonDelete.setOnClickListener(this);
editTextId.setText(id);
getEmployee();
}
private void getEmployee(){
class GetEmployee extends AsyncTask<Void,Void,String>{
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(TampilPegawai.this,"Fetching...","Wait...",false,false);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
showEmployee(s);
}
@Override
protected String doInBackground(Void... params) {
RequestHandler rh = new RequestHandler();
String s = rh.sendGetRequestParam(konfigurasi.URL_GET_EMP,id);
return s;
}
}
GetEmployee ge = new GetEmployee();
ge.execute();
}
private void showEmployee(String json){
try {
JSONObject jsonObject = new JSONObject(json);
JSONArray result = jsonObject.getJSONArray(konfigurasi.TAG_JSON_ARRAY);
JSONObject c = result.getJSONObject(0);
String name = c.getString(konfigurasi.TAG_NAMA);
String desg = c.getString(konfigurasi.TAG_POSISI);
String sal = c.getString(konfigurasi.TAG_GAJIH);
editTextName.setText(name);
editTextDesg.setText(desg);
editTextSalary.setText(sal);
} catch (JSONException e) {
e.printStackTrace();
}
}
private void updateEmployee(){
final String name = editTextName.getText().toString().trim();
final String desg = editTextDesg.getText().toString().trim();
final String salary = editTextSalary.getText().toString().trim();
class UpdateEmployee extends AsyncTask<Void,Void,String>{
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(TampilPegawai.this,"Updating...","Wait...",false,false);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
Toast.makeText(TampilPegawai.this,s,Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(Void... params) {
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put(konfigurasi.KEY_EMP_ID,id);
hashMap.put(konfigurasi.KEY_EMP_NAMA,name);
hashMap.put(konfigurasi.KEY_EMP_POSISI,desg);
hashMap.put(konfigurasi.KEY_EMP_GAJIH,salary);
RequestHandler rh = new RequestHandler();
String s = rh.sendPostRequest(konfigurasi.URL_UPDATE_EMP,hashMap);
return s;
}
}
UpdateEmployee ue = new UpdateEmployee();
ue.execute();
}
private void deleteEmployee(){
class DeleteEmployee extends AsyncTask<Void,Void,String> {
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(TampilPegawai.this, "Updating...", "Tunggu...", false, false);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
Toast.makeText(TampilPegawai.this, s, Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(Void... params) {
RequestHandler rh = new RequestHandler();
String s = rh.sendGetRequestParam(konfigurasi.URL_DELETE_EMP, id);
return s;
}
}
DeleteEmployee de = new DeleteEmployee();
de.execute();
}
private void confirmDeleteEmployee(){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Apakah Kamu Yakin Ingin Menghapus Pegawai ini?");
alertDialogBuilder.setPositiveButton("Ya",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
deleteEmployee();
startActivity(new Intent(TampilPegawai.this,TampilSemuaPgw.class));
}
});
alertDialogBuilder.setNegativeButton("Tidak",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
@Override
public void onClick(View v) {
if(v == buttonUpdate){
updateEmployee();
}
if(v == buttonDelete){
confirmDeleteEmployee();
}
}
}
Setelah teman - teman mengikuti tahapan demi tahapan yang panjang tersebut hhe :), Maka program Android teman - teman sudah siap dijalankan pada emulator ataupun Handphone secara langsung. Insyaalloh jika kalian tengikuti tutorialnya dengan baik dan teliti pastinya tidak akan mendapatkan error dalam artian teman - teman berhasil membuat CRUD dari Android Studio menggunakan Database MySQL.
Jika teman - teman masih mendapatkan error, Silahkan kalian cek kembali File Java Class nya beserta File XML apakah sudah benar ataukah belum. Dari program Android yang telah kita buat maka akan mencipkatan susunan untuk file Java Class maupun file XML seperti gambar dibawah ini:
Jika teman - teman masih mendapatkan error, Silahkan kalian cek kembali File Java Class nya beserta File XML apakah sudah benar ataukah belum. Dari program Android yang telah kita buat maka akan mencipkatan susunan untuk file Java Class maupun file XML seperti gambar dibawah ini:
Catatan
Hal penting yang harus teman - teman perhatikan sebelum menjalankan program yang sudah kita buat, jangan lupa terlebih dahulu untuk menghidupkan Apache serta MySQL pada XAMPP ataupun WAMP atau apapun web service yang teman - teman gunakan.
Jika masih terdapat yang kurang silahkan kalian baca lagi ke atas dengan teliti mungkin ada yang terlewatkan.
Mungkin sampai disini pembahasan mengenai Pembuatan CRUD Android Studio menggunakan Database MySQL.
Terimakasih telah membaca Artikel ini mengenai Tutorial CRUD Android Studio dengan MySQL Part #2.
Semoga bermanfaat -- Salam Success
By: Muhammad Rizal Supriadi