You are on page 1of 15

Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

MySQL dan JSON dengan ListView

Step 0 :
Nama database tes_jason
Scrip import :
-- phpMyAdmin SQL Dump
-- version 4.2.11
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: 24 Mei 2017 pada 16.17
-- Versi Server: 5.6.21
-- PHP Version: 5.5.19

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 utf8 */;
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

--
-- Database: `tes_jason`
--

-- --------------------------------------------------------

--
-- Struktur dari tabel `datajason`
--

CREATE TABLE IF NOT EXISTS `datajason` (


`id` varchar(4) COLLATE latin1_general_ci NOT NULL,
`nama` varchar(160) COLLATE latin1_general_ci NOT NULL,
`alamat` varchar(50) COLLATE latin1_general_ci NOT NULL,
`jk` varchar(10) COLLATE latin1_general_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

--
-- Dumping data untuk tabel `datajason`
--

INSERT INTO `datajason` (`id`, `nama`, `alamat`, `jk`) VALUES


('A001', 'Yamiriko', 'Yami No Sekai', 'Laki-Laki'),
('A002', 'Riko Software', 'Pekanbaru', 'Laki-Laki'),
('A003', 'Delphi Anime Lover', 'http://delphianimelover.blogspot.co.id/', 'Laki-Laki'),
('A004', 'Gusrio Tendra', 'Dihatimu', 'Laki-Laki'),
('A005', 'Gusrio Tendra', 'Dihatimu', 'Laki-Laki'),
('A006', 'Heri Priadi', 'Jl. Google Gang Adsense', 'Pria');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `datajason`
--
ALTER TABLE `datajason`
ADD PRIMARY KEY (`id`);

/*!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 */;
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

Pembuatan API menggunakan Bahasa pemrograman PHP.


koneksi.php
<?php

$user = "u481604106_riko";
$pass = "riko123456789@@";
$database = "u481604106_jason";
$host = "localhost";

$connect_db = mysqli_connect($host, $user, $pass, $database);


//mysql_select_db($database, $connect_db) or die("Database Tidak Ada");
// Check connection
if (mysqli_connect_errno())
{
echo "Tidak Bisa Menghubungkan Ke MySQL: " . mysqli_connect_error();
}
?>

tampilkan.php
<?php
include('koneksi.php');
$respon = array();
$sql = "SELECT * FROM datajason ORDER BY id";
$data = mysqli_query($connect_db,$sql);
if (mysqli_num_rows($data)>0){
$respon["data"] = array();
while ($row = mysqli_fetch_array($data)){
$item = array();
$item["id"] = $row["id"];
$item["nama"] = $row["nama"];
$item["alamat"] = $row["alamat"];
$item["jk"] = $row["jk"];

array_push($respon["data"], $item);
}
$respon["sukses"]=1;
} else {
$respon["sukses"]=0;
$respon["pesan"]="Data tidak ditemukan";
}
echo json_encode($respon);
?>

slect.php
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

<?php
include('koneksi.php');
$respon = array();
$id = $_GET['id'];
$sql = "SELECT * FROM datajason WHERE id='$id'";
$data = mysqli_query($connect_db,$sql);
if (mysqli_num_rows($data)>0){
$respon["data"] = array();
while ($row = mysqli_fetch_array($data)){
$item = array();
$item["id"] = $row["id"];
$item["nama"] = $row["nama"];
$item["alamat"] = $row["alamat"];
$item["jk"] = $row["jk"];

array_push($respon["data"], $item);
}
$respon["sukses"]=1;
}
else {
$respon["sukses"]=0;
$respon["pesan"]="Data tidak ditemukan";
}
echo json_encode($respon);
?>

Insert.php
<?php
include('koneksi.php');
$id = $_GET['id'];
$nama = $_GET['nama'];
$alamat = $_GET['alamat'];
$jk = $_GET['jk'];
$respon = array();
$sql = "INSERT INTO datajason (id,nama,alamat, jk) VALUES ('$id','$nama',
'$alamat','$jk')";
$hasil = mysqli_query($connect_db,$sql);
if ($hasil){
$respon["sukses"]=1;
$respon["pesan"]="Data Berhasil Disimpan!";
}
else {
$respon["sukses"]=0;
$respon["pesan"]="Penyimpanan Gagal!";
}
echo json_encode($respon);
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

?>

ubah.php
<?php
include('koneksi.php');
$id = $_GET['id'];
$nama = $_GET['nama'];
$alamat = $_GET['alamat'];
$jk = $_GET['jk'];
$respon = array();
$sql = "UPDATE datajason SET nama='$nama',alamat='$alamat', jk='$jk' WHERE
id='$id'";
$hasil = mysqli_query($connect_db,$sql);
if ($hasil){
$respon["sukses"]=1;
$respon["pesan"]="Pengubahan Data Berhasil";
}
else {
$respon["sukses"]=0;
$respon["pesan"]="Pengubahan Data Gagal";
}
echo json_encode($respon);
?>

hapus.php
<?php
include('koneksi.php');
$id = $_GET['id'];
$respon = array();
$sql = "DELETE FROM datajason WHERE id='$id'";
$hasil = mysqli_query($connect_db,$sql);
if ($hasil){
$respon["sukses"]=1;
$respon["pesan"]="Delete Berhasil";
}
else {
$respon["sukses"]=0;
$respon["pesan"]="Delete Gagal";
}
echo json_encode($respon);
?>

Selesai pembutan api diatas selanjutnya masukkan baris coding dibawah ini pada
compile 'com.mcxiaoke.volley:library:1.0.19'
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

Step 1 :
Buatlah projek dengan nama : Android_MySQL
Untuk nama aktivitynya : Utama

Step 2 :
Selanjutnya mendesain tampilan activity/form utama yang akan digunakan. Langsung saja
gunakan coding ini dengan sedikit pengeditan pada :
tools:context="rikosoftware.costumlistviewbiasa.MainActivity"

activity_utama.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:id="@+id/activity_utama"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="2dp"
android:paddingLeft="2dp"
android:paddingRight="2dp"
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

android:paddingTop="2dp"
tools:context="rikosoftware.android_mysql.Utama">

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView" />

<Button
android:text="Tambah Data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnSimpan" />

<Button
android:text="Ubah atau Hapus Data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/BtnUbahHapus" />

<Button
android:text="Keluar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnKeluar" />
</LinearLayout>
</ScrollView>
</RelativeLayout>

Step 3 :
Desain tampilan Listviewnya yang berasal dari Resource Layout. Cara membuatnya :
1. Klik kanan pada layout  New  Layout Resource File. Terlihat pada gambar :
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

2. Lalu ketikkan listview. Terlihat seperti

Isi coding xml dari file costum_list_view.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="100dp">

<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtID"
android:textSize="18sp"
android:textStyle="normal|bold" />

<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtNama"
android:textAlignment="textEnd"
android:textSize="14sp"
android:textStyle="normal|italic" />

<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtAlamat"
android:textAlignment="textEnd"
android:textSize="14sp"
android:textStyle="normal|italic" />

<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtJK"
android:textSize="18sp"
android:textStyle="normal|bold" />
</LinearLayout>
</LinearLayout>

Step 5 :
Buat Class dengan nama : CostumView.java
Cara membuatnya :
1. Pilih pada javanya dan folder dibawahnya lalu pilih New  Java Class
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

2. Buat nama classnya : CostumView,, lalu klik OK

Coding lengkapnya CostumView.java


package rikosoftware.android_mysql;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.TextView;

import org.w3c.dom.Text;

import java.util.List;

/**
* Created by RikoSoftware on 5/24/2017.
*/

public class CostumView extends BaseAdapter {


//private final Context context;
//private final String[] tnId, tnNama, tnAlamat, tnJk;
private LayoutInflater inflater;
private Activity activity;
private List<DataJason>dataJasonItems;

public CostumView(Activity activity, List<DataJason>dataJasonItems){


Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

this.activity = activity;
this.dataJasonItems=dataJasonItems;
}

@Override
public int getCount() {
return dataJasonItems.size();
}

@Override
public Object getItem(int location) {
return dataJasonItems.get(location);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.costum_list_view, null);

//View rowView = inflater.inflate(R.layout.costum_list_view, parent, false);


TextView tvId=(TextView)convertView.findViewById(R.id.txtID);
TextView tvNama=(TextView)convertView.findViewById(R.id.txtNama);
TextView tvAlamat=(TextView)convertView.findViewById(R.id.txtAlamat);
TextView tvJK=(TextView)convertView.findViewById(R.id.txtJK);

DataJason DJ = dataJasonItems.get(position);

tvId.setText("ID: " + DJ.getKode());


tvNama.setText("Nama: " + DJ.getNama());
tvAlamat.setText("Alamat : " + DJ.getAlamat());
tvJK.setText("Jenis Kelamin : " + DJ.getJkel());

return convertView;
}
}

Lakukan cara yang sama dengan Classs CostumView.java pada Class DataJason.java
Class DataJason ini gunanya untuk menampung data dari database dan yang akan ditempelkan
DataJason.java
package rikosoftware.android_mysql;

import java.util.ArrayList;

/**
* Created by RikoSoftware on 5/28/2017.
*/

public class DataJason {


Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

private String kode,nama,alamat,jkel;


private ArrayList<String>djason;

public DataJason(){
}

public DataJason(String kode, String nama, String alamat, String jkel){


this.kode=kode;
this.nama=nama;
this.alamat=alamat;
this.jkel=jkel;
}

public String getKode(){


return kode;
}

public void setKode(String tampungid){


this.kode=tampungid;
}

public String getNama(){


return nama;
}

public void setNama(String tampungNama){


this.nama=tampungNama;
}

public String getAlamat(){


return alamat;
}

public void setAlamat(String tampungAlamat){


this.alamat=tampungAlamat;
}

public String getJkel(){


return jkel;
}

public void setJkel(String tampungJkel){


this.jkel=tampungJkel;
}
}

URLHP.java
package rikosoftware.android_mysql;

import android.net.Uri;

/**
* Created by RikoSoftware on 5/24/2017.
*/

public class URLPHP {


public static final String tandaBaca = "@#&=*+-_.,:!?()/~'%";

public static String tambahdata(String iddata, String nama, String alamat, String
jk){
//return
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

Uri.encode("http://srv1.delphianimelover.com/tesjason/insert.php?id="+iddata+"&nama="+
nama+"&alamat="+alamat+"&jk="+jk,tandaBaca);
return
Uri.encode("http://rikosoftware.esy.es/insert.php?id="+iddata+"&nama="+nama+"&alamat="
+alamat+"&jk="+jk,tandaBaca);
}

public static String caridata(String iddata){


return "http://rikosoftware.esy.es/slect.php?id="+iddata;
}

public static String updatedata(String iddata, String nama, String alamat,


String jk){
return
Uri.encode("http://rikosoftware.esy.es/ubah.php?id="+iddata+"&nama="+nama+"&alamat="+a
lamat+"&jk="+jk,tandaBaca);
}

public static String hapusdata(String iddata){


return
Uri.encode("http://rikosoftware.esy.es/hapus.php?id="+iddata,tandaBaca);
}

public static String tampildata(){


return "http://rikosoftware.esy.es/tampilkan.php";
}
}

Step 6 :
Pengodingan pada Utama.java
package rikosoftware.android_mysql;

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.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class Utama extends AppCompatActivity {


private Button btInput, btUbahHapus, btkeluar;
private AlertDialog.Builder dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_utama);

//Coding Menmbuat Judul Pada Action Bar


if(Integer.valueOf(android.os.Build.VERSION.SDK) >= 11){
android.support.v7.app.ActionBar ab = getSupportActionBar();
ab.setTitle("Android MySQL");
ab.setSubtitle("Halaman Utama");
}
else {
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

setTitle("Android MySQL");
}

btInput = (Button)findViewById(R.id.btnSimpan);
btUbahHapus = (Button)findViewById(R.id.BtnUbahHapus);
btkeluar = (Button)findViewById(R.id.btnKeluar);

tambahdata();
ubahhapusdata();
keluar();

private void tambahdata(){


btInput.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent pencet = new Intent(Utama.this,TambahData.class);
startActivity(pencet);
}
});
}

private void ubahhapusdata(){


btUbahHapus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent pencet = new Intent(Utama.this,UbahHapusData.class);
startActivity(pencet);
}
});
}

private void keluar(){


btkeluar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog = new AlertDialog.Builder(Utama.this);
dialog.setCancelable(false);
dialog.setIcon(R.mipmap.ic_launcher);
dialog.setTitle("Keluar Aplikasi");
dialog.setMessage("Kamu Mau Keluar dari Aplikasi ini?");
dialog.setPositiveButton("Ya", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
dialog.setNegativeButton("Tidak", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialog.show();
}
});
}

boolean back1 = false; //inisialisasi variabel back1


@Override
public void onBackPressed() {
Android Studio MySQL dan JSON dengan ListView Jean Riko Kurniawan Putra

if (back1) { //apabila back1 = true maka keluar dari aplikasi


finish();
} else { //apabila back1 = false maka akan muncul toast, lalu back1
diset menjadi true
back1 = true;
Toast toasttengah = Toast.makeText(Utama.this, "tekan back sekali lagi",
Toast.LENGTH_SHORT);
toasttengah.setGravity(Gravity.CENTER,0,0);
toasttengah.show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
back1 = false; //apabila user tidak menekan back selama 2 detik,
maka back1 diset menjadi false kembali
}
}, 2000);
}
}
}

Bio Grafi Penulis:


Nama : Jean Riko Kurniawan Putra, M.Kom
Hobi : Programming Desktop dan Programming Android,
Anime, Jejepangan
Tempat/Tanggal Lahir : Medan, 16 Januari 1990
Alamat : Jl. Hangtuah No 275 A Kel. Rejosari Kec. Tenayan Rata
Kota Pekanbaru Provinsi Riau
Facebook : https://www.facebook.com/Jean.Riko.K.P
Telegram : @Yamiriko
Aktivis Grup Sekaligus Admin : https://t.me/delphipekanbaru
Pekerjaan : Dosen, Programmer disebuah CV di Pekanbaru
WA/Line/Telegram/Phone : 0823-8694-4596
Email : riko.kurniawan18@yahoo.co.id
Blog : http://delphianimelover.blogspot.com/

You might also like