Aplikasi Sistem Sekolah Android

CRUD sebenarnya adalah singkatan dari Create Read Update Delete, sengaja membuat judul seperti itu karena saya biasa saat melakukan pencarian, yang diketik adalah Insert, Update, Delete.. hehe.. tujuannya agar agan-agan cepat dapat alamat blog ini :D 

Sedangkan JSON merupakan singkatan dari JavaScript Object Notation. jika ingin jelas silahkan kunjungi json.org. Jika memiliki waktu silahkan juga pelajari tentang XML, saya pernah bermain dengan REST Web Serivce dan membandingkan penggunaan antara XML dan JSON, saya jauh lebih tertarik dengan yang namanya JSON, kenapa?, karena saat melakukan proses CRUD waktunya proses lebih cepat JSON apalagi berhubungan dengan gambar, saya tidak tau apakah memang coding saya yang salah atau bagaimana, tapi tetap kesimpulannya saya lebih suka dengan JSON Bahh..!!! .. heheh... :D


Tutorial ini akan membahas tentang proses Insert, Update, Delete Biodata. field yang digunakan hanya 3, semoga dengan menguasai materi ini, pembaca bisa mengembangkan ke jumlah field yang lebih banyak lagi.

Jika ingin menggunakan database SQLite silahkan lihat Android SQLite - create, read, update, delete (CRUD)


Peralatan
  • Database : MySQL (XAMPP, WAMP, AppServ, dsb) yang penting bisa buat database MySql
  • PHP : NotePad++, Sublime Text  dsb. Saya menggunakan Netbeans
  • Android : Eclipse, ADT, Android SDK (Yang penting Android sudah siap )

Persiapan
  • Database :
    • Buka localhost/phpmyadmin
    • Buat database dengan nama tips_crud_android_json_mysql
  • PHP :
    • Buka folder htdocs ( C : xampp/htdocs )
    • Buat sebuah folder bernama tips_crud_android_json_mysql
    • di dalam folder tips_crud_android_json_mysql, buat sebuah file dengan nama server.php
  • Android :
    • Buat sebuah project (File -> New Android Application) dan beri nama Tips-Crud_Android_JSON_MySql
    • Pada lokasi src pastikan sudah ada file :
      • MainActivity.java
      • Koneksi.Java
      • Biodata.java
    • Pada lokasi res->layout pastikan sudah ada file :
      • main.xml
    • Pada lokasi res -> drawable-mdpi masukkan sebuat gambar, saya buat batagrams.gif
    • Buka AndroidManifes.xml, kemudian pastikan memiliki permission Internet seperti berikut
          <uses-permission android:name="android.permission.INTERNET" />
      
      Berikut berupa isi AndroidManifest.xml saya :
      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="jhohannes.purba"
          android:versionCode="1"
          android:versionName="1.0" >
      
          <uses-sdk
              android:minSdkVersion="8"
              android:targetSdkVersion="8" />
      
          <uses-permission android:name="android.permission.INTERNET" />
      
          <application
              android:allowBackup="true"
              android:icon="@drawable/ic_launcher"
              android:label="@string/app_name"
              android:theme="@style/AppTheme" >
              <activity
                  android:name="jhohannes.purba.MainActivity"
                  android:label="@string/app_name" >
                  <intent-filter>
                      <action android:name="android.intent.action.MAIN" />
      
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
              </activity>
          </application>
      
      </manifest>
      
Untuk memastikan persiapan sudah selesai, silahkan perhatikan gambar berikut : 
Konfigurasi CRUD
Konfigurasi CRUD

Database

Ekseskusi query ini untuk membuat tabel_biodata

1
2
3
4
5
6
CREATE TABLE IF NOT EXISTS `tabel_biodata` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(50) NOT NULL,
  `alamat` varchar(200) NOT NULL,
  PRIMARY KEY (`id`)
)

Masukkan data dengan mengeksekusi query berikut :

1
2
3
4
INSERT INTO `tabel_biodata` (`id`, `nama`, `alamat`) VALUES
(1, 'Jhohannes H Purba', 'Kabanjahe'),
(2, 'Berkat Junaidi Banurea', 'Sidikalang'),
(3, 'Totok BluesMan Silalahi', 'Medan');

Jika dibrowse, maka hasilnya akan kelihatan seperti gambar berikut :

Database CRUD
Database CRUD

PHP - server.php



Buka server.php yang berada di lokasi C:\xampp\htdocs\tips_crud_android_json_mysql\server.php, lalu ketikkan source code berikut :
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php

$server = "localhost";
$username = "root";
$password = "";
$database = "tips_crud_android_json_mysql";

mysql_connect($server, $username, $password) or die("<h1>Koneksi Mysql Error : </h1>" . mysql_error());
mysql_select_db($database) or die("<h1>Koneksi Kedatabase Error : </h1>" . mysql_error());

@$operasi = $_GET['operasi'];

switch ($operasi) {
    case "view":
        /* Source code untuk Menampilkan Biodata */

        $query_tampil_biodata = mysql_query("SELECT * FROM tabel_biodata") or die(mysql_error());
        $data_array = array();
        while ($data = mysql_fetch_assoc($query_tampil_biodata)) {
            $data_array[] = $data;
        }
        echo json_encode($data_array);

        //print json_encode($data_array);
        //[{"id":"1","nama":"Jhohannes H Purba","alamat":"Kabanjahe"},{"id":"2","nama":"Berkat Junaidi Banurea","Alamat":"Sidikalang"},{"id":"3","nama":"Totok BluesMan Silalahi","Alamat":"Medan"}]

        break;
    case "insert":
        /* Source code untuk Insert data */
        @$nama = $_GET['nama'];
        @$alamat = $_GET['alamat'];
        $query_insert_data = mysql_query("INSERT INTO tabel_biodata (nama, alamat) VALUES('$nama', '$alamat')");
        if ($query_insert_data) {
            echo "Data Berhasil Disimpan";
        } else {
            echo "Error Inser Biodata " . mysql_error();
        }

        break;
    case "get_biodata_by_id":
        /* Source code untuk Edit data dan mengirim data berdasarkan id yang diminta */
        @$id = $_GET['id'];

        $query_tampil_biodata = mysql_query("SELECT * FROM tabel_biodata WHERE id='$id'") or die(mysql_error());
        $data_array = array();
        $data_array = mysql_fetch_assoc($query_tampil_biodata);
        echo "[" . json_encode($data_array) . "]";


        break;
    case "update":
        /* Source code untuk Update Biodata */
        @$nama = $_GET['nama'];
        @$alamat = $_GET['alamat'];
        @$id = $_GET['id'];
        $query_update_biodata = mysql_query("UPDATE tabel_biodata SET nama='$nama', alamat='$alamat' WHERE id='$id'");
        if ($query_update_biodata) {
            echo "Update Data Berhasil";
        } else {
            echo mysql_error();
        }
        break;
    case "delete":
        /* Source code untuk Delete Biodata */
        @$id = $_GET['id'];
        $query_delete_biodata = mysql_query("DELETE FROM tabel_biodata WHERE id='$id'");
        if ($query_delete_biodata) {
            echo "Delete Data Berhasil";
        } else {
            echo mysql_error();
        }

        break;

    default:
        break;
}
?>

Sebelum diuji coba pada aplikasi Android, dapat dilakukan pengujian pada Browser, Silahkan mencoba url berikut :

view
URL :  http://localhost/tips_crud_android_json_mysql/server.php?operasi=view
Output :

[{"id":"1","nama":"Jhohannes H Purba","alamat":"Kabanjahe"},{"id":"2","nama":"Berkat Junaidi Banurea","alamat":"Sidikalang"},{"id":"3","nama":"Totok BluesMan Silalahi","alamat":"Medan"}]

insert 
URL :
http://localhost/tips_crud_android_json_mysql/server.php?operasi=insert&nama=Batagramas&alamat=Medan
Output : Data Berhasil Disimpan
Untuk melihat hasilnya, buka table_biodata, maka akan kelihatan data bertambah

get_biodata_by_id
URL :
http://localhost/tips_crud_android_json_mysql/server.php?operasi=get_biodata_by_id&id=1
Output :
[{"id":"1","nama":"Jhohannes H Purba","alamat":"Kabanjahe"}]

update 
URL :
http://localhost/tips_crud_android_json_mysql/server.php?operasi=update&nama=Batagrams&alamat=Medan&id=4
Output : Update Data Berhasil

Delete
URL :
http://localhost/tips_crud_android_json_mysql/server.php?operasi=delete&id=1
Output : Delete Data Berhasil, lihat hasilnya di database, maka record yang berdasarkan id yang dihapus akan terhapus

Hasil yang ditampilkan di browser akan dikirim ke Android untuk selanjutnya diproses oleh android.


Android


Android - main.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/buttonTambahBiodata"
        android:layout_width="186dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Tambah Biodata" />

    <HorizontalScrollView
        android:id="@+id/horizontalScrollView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ScrollView
            android:id="@+id/verticalScrollView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TableLayout
                android:id="@+id/tableBiodata"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="80dp" >
            </TableLayout>
        </ScrollView>
    </HorizontalScrollView>

</LinearLayout>

Pada layout saya membuat TableLayout berada pada VerticalScrollView di dalamScrollView, ini berfungsi agar data yang memiliki lebar lebih dari ukuran layar secara otomoatis terscroll sehingga data semua bisa kelihatan.

Android - Koneksi.java

Path : src/jhohannes.purba/Koneksi.java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package jhohannes.purba;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

public class Koneksi {

 
 public String call(String url) {
  int BUFFER_SIZE = 2000;
  InputStream in = null;
  try {
   in = OpenHttpConnection(url);
  } catch (IOException e) {
   e.printStackTrace();
   return "";
  }
  InputStreamReader isr = new InputStreamReader(in);
  int charRead;
  String str = "";
  char[] inputBuffer = new char[BUFFER_SIZE];
  try {
   while ((charRead = isr.read(inputBuffer)) > 0) {
    String readString = String.copyValueOf(inputBuffer, 0, charRead);
    str += readString;
    inputBuffer = new char[BUFFER_SIZE];
   }
   in.close();
  } catch (IOException e) {
   // Handle Exception
   e.printStackTrace();
   return "";
  }
  return str;
 }

 private InputStream OpenHttpConnection(String url) throws IOException {
  InputStream in = null;
  int response = -1;
  URL url1 = new URL(url);
  URLConnection conn = url1.openConnection();
  if (!(conn instanceof HttpURLConnection))
   throw new IOException("Not An Http Connection");
  try {
   HttpURLConnection httpconn = (HttpURLConnection) conn;
   httpconn.setAllowUserInteraction(false);
   httpconn.setInstanceFollowRedirects(true);
   httpconn.setRequestMethod("GET");
   httpconn.connect();
   response = httpconn.getResponseCode();
   if (response == HttpURLConnection.HTTP_OK) {
    in = httpconn.getInputStream();
   }
  } catch (Exception e) {
   throw new IOException("Error connecting2");
  }
  return in;
 }

}


Android - Biodata.java

Path : src/jhohannes.purba/Koneksi.java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package jhohannes.purba;

public class Biodata extends Koneksi {
 String URL = "http://10.0.2.2/tips_crud_android_json_mysql/server.php";
 String url = "";
 String response = "";

 public String tampilBiodata() {
  try {
   url = URL + "?operasi=view";
   System.out.println("URL Tampil Biodata: " + url);
   response = call(url);
  } catch (Exception e) {
  }
  return response;
 }

 public String inserBiodata(String nama, String alamat) {
  try {
   url = URL + "?operasi=insert&nama=" + nama + "&alamat=" + alamat;
   System.out.println("URL Insert Biodata : " + url);
   response = call(url);
  } catch (Exception e) {
  }
  return response;
 }

 public String getBiodataById(int id) {
  try {
   url = URL + "?operasi=get_biodata_by_id&id=" + id;
   System.out.println("URL Insert Biodata : " + url);
   response = call(url);
  } catch (Exception e) {
  }
  return response;
 }

 public String updateBiodata(String id, String nama, String alamat) {
  try {
   url = URL + "?operasi=update&id=" + id + "&nama=" + nama + "&alamat=" + alamat;
   System.out.println("URL Insert Biodata : " + url);
   response = call(url);
  } catch (Exception e) {
  }
  return response;
 }

 public String deleteBiodata(int id) {
  try {
   url = URL + "?operasi=delete&id=" + id;
   System.out.println("URL Insert Biodata : " + url);
   response = call(url);
  } catch (Exception e) {
  }
  return response;
 }

}

Method yang ada dalam class ini akan membentuk url yang selanjutnya akan dikirim ke Server ( Perhatikan URL yang dicoba di Browser sebelumnya). setelah url dieksekusi maka output yang terlihat di browser  akan ditangkap oleh Method ini, kemudian hasilnya akan dikirim kepada yang memanggil.

Android - MainActivity.java

Path : src/jhohannes.purba/MainActivity.java
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
package jhohannes.purba;

import java.util.ArrayList;

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

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.ViewPager.LayoutParams;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

 Biodata biodata = new Biodata();
 TableLayout tabelBiodata;

 Button buttonTambahBiodata;
 ArrayList<Button> buttonEdit = new ArrayList<Button>();
 ArrayList<Button> buttonDelete = new ArrayList<Button>();

 JSONArray arrayBiodata;

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

  tabelBiodata = (TableLayout) findViewById(R.id.tableBiodata);
  buttonTambahBiodata = (Button) findViewById(R.id.buttonTambahBiodata);
  buttonTambahBiodata.setOnClickListener(this);

  TableRow barisTabel = new TableRow(this);
  barisTabel.setBackgroundColor(Color.CYAN);

  TextView viewHeaderId = new TextView(this);
  TextView viewHeaderNama = new TextView(this);
  TextView viewHeaderAlamat = new TextView(this);
  TextView viewHeaderAction = new TextView(this);

  viewHeaderId.setText("ID");
  viewHeaderNama.setText("Nama");
  viewHeaderAlamat.setText("Alamat");
  viewHeaderAction.setText("Action");

  viewHeaderId.setPadding(5, 1, 5, 1);
  viewHeaderNama.setPadding(5, 1, 5, 1);
  viewHeaderAlamat.setPadding(5, 1, 5, 1);
  viewHeaderAction.setPadding(5, 1, 5, 1);

  barisTabel.addView(viewHeaderId);
  barisTabel.addView(viewHeaderNama);
  barisTabel.addView(viewHeaderAlamat);
  barisTabel.addView(viewHeaderAction);

  tabelBiodata.addView(barisTabel, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
    LayoutParams.WRAP_CONTENT));

  try {

   arrayBiodata = new JSONArray(biodata.tampilBiodata());

   for (int i = 0; i < arrayBiodata.length(); i++) {
    JSONObject jsonChildNode = arrayBiodata.getJSONObject(i);
    String name = jsonChildNode.optString("nama");
    String alamat = jsonChildNode.optString("Alamat");
    String id = jsonChildNode.optString("id");

    System.out.println("Nama :" + name);
    System.out.println("Alamat :" + alamat);
    System.out.println("ID :" + id);

    barisTabel = new TableRow(this);

    if (i % 2 == 0) {
     barisTabel.setBackgroundColor(Color.LTGRAY);
    }

    TextView viewId = new TextView(this);
    viewId.setText(id);
    viewId.setPadding(5, 1, 5, 1);
    barisTabel.addView(viewId);

    TextView viewNama = new TextView(this);
    viewNama.setText(name);
    viewNama.setPadding(5, 1, 5, 1);
    barisTabel.addView(viewNama);

    TextView viewAlamat = new TextView(this);
    viewAlamat.setText(alamat);
    viewAlamat.setPadding(5, 1, 5, 1);
    barisTabel.addView(viewAlamat);

    buttonEdit.add(i, new Button(this));
    buttonEdit.get(i).setId(Integer.parseInt(id));
    buttonEdit.get(i).setTag("Edit");
    buttonEdit.get(i).setText("Edit");
    buttonEdit.get(i).setOnClickListener(this);
    barisTabel.addView(buttonEdit.get(i));

    buttonDelete.add(i, new Button(this));
    buttonDelete.get(i).setId(Integer.parseInt(id));
    buttonDelete.get(i).setTag("Delete");
    buttonDelete.get(i).setText("Delete");
    buttonDelete.get(i).setOnClickListener(this);
    barisTabel.addView(buttonDelete.get(i));

    tabelBiodata.addView(barisTabel, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT,
      LayoutParams.MATCH_PARENT));
   }
  } catch (JSONException e) {
   e.printStackTrace();
  }
 }

 public void onClick(View view) {

  if (view.getId() == R.id.buttonTambahBiodata) {
   // Toast.makeText(MainActivity.this, "Button Tambah Data",
   // Toast.LENGTH_SHORT).show();

   tambahBiodata();

  } else {
   /*
    * Melakukan pengecekan pada data array, agar sesuai dengan index
    * masing-masing button
    */
   for (int i = 0; i < buttonEdit.size(); i++) {

    /* jika yang diklik adalah button edit */
    if (view.getId() == buttonEdit.get(i).getId() && view.getTag().toString().trim().equals("Edit")) {
     // Toast.makeText(MainActivity.this, "Edit : " +
     // buttonEdit.get(i).getId(), Toast.LENGTH_SHORT).show();
     int id = buttonEdit.get(i).getId();
     getDataByID(id);

    } /* jika yang diklik adalah button delete */
    else if (view.getId() == buttonDelete.get(i).getId() && view.getTag().toString().trim().equals("Delete")) {
     // Toast.makeText(MainActivity.this, "Delete : " +
     // buttonDelete.get(i).getId(), Toast.LENGTH_SHORT).show();
     int id = buttonDelete.get(i).getId();
     deleteBiodata(id);

    }
   }
  }
 }

 public void deleteBiodata(int id) {
  biodata.deleteBiodata(id);

  /* restart acrtivity */
  finish();
  startActivity(getIntent());

 }

 public void getDataByID(int id) {

  String namaEdit = null, alamatEdit = null;
  JSONArray arrayPersonal;

  try {

   arrayPersonal = new JSONArray(biodata.getBiodataById(id));

   for (int i = 0; i < arrayPersonal.length(); i++) {
    JSONObject jsonChildNode = arrayPersonal.getJSONObject(i);
    namaEdit = jsonChildNode.optString("nama");
    alamatEdit = jsonChildNode.optString("alamat");
   }
  } catch (JSONException e) {
   e.printStackTrace();
  }

  LinearLayout layoutInput = new LinearLayout(this);
  layoutInput.setOrientation(LinearLayout.VERTICAL);

  // buat id tersembunyi di alertbuilder
  final TextView viewId = new TextView(this);
  viewId.setText(String.valueOf(id));
  viewId.setTextColor(Color.TRANSPARENT);
  layoutInput.addView(viewId);

  final EditText editNama = new EditText(this);
  editNama.setText(namaEdit);
  layoutInput.addView(editNama);

  final EditText editAlamat = new EditText(this);
  editAlamat.setText(alamatEdit);
  layoutInput.addView(editAlamat);

  AlertDialog.Builder builderEditBiodata = new AlertDialog.Builder(this);
  builderEditBiodata.setIcon(R.drawable.batagrams);
  builderEditBiodata.setTitle("Update Biodata");
  builderEditBiodata.setView(layoutInput);
  builderEditBiodata.setPositiveButton("Update", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
    String nama = editNama.getText().toString();
    String alamat = editAlamat.getText().toString();

    System.out.println("Nama : " + nama + " Alamat : " + alamat);

    String laporan = biodata.updateBiodata(viewId.getText().toString(), editNama.getText().toString(),
      editAlamat.getText().toString());

    Toast.makeText(MainActivity.this, laporan, Toast.LENGTH_SHORT).show();

    /* restart acrtivity */
    finish();
    startActivity(getIntent());
   }

  });

  builderEditBiodata.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
    dialog.cancel();
   }
  });
  builderEditBiodata.show();

 }

 public void tambahBiodata() {
  /* layout akan ditampilkan pada AlertDialog */
  LinearLayout layoutInput = new LinearLayout(this);
  layoutInput.setOrientation(LinearLayout.VERTICAL);

  final EditText editNama = new EditText(this);
  editNama.setHint("Nama");
  layoutInput.addView(editNama);

  final EditText editAlamat = new EditText(this);
  editAlamat.setHint("Alamat");
  layoutInput.addView(editAlamat);

  AlertDialog.Builder builderInsertBiodata = new AlertDialog.Builder(this);
  builderInsertBiodata.setIcon(R.drawable.batagrams);
  builderInsertBiodata.setTitle("Insert Biodata");
  builderInsertBiodata.setView(layoutInput);
  builderInsertBiodata.setPositiveButton("Insert", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
    String nama = editNama.getText().toString();
    String alamat = editAlamat.getText().toString();

    System.out.println("Nama : " + nama + " Alamat : " + alamat);

    String laporan = biodata.inserBiodata(nama, alamat);

    Toast.makeText(MainActivity.this, laporan, Toast.LENGTH_SHORT).show();

    /* restart acrtivity */
    finish();
    startActivity(getIntent());
   }

  });

  builderInsertBiodata.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
    dialog.cancel();
   }
  });
  builderInsertBiodata.show();
 }
}


Di sini saya hanya akan menjelaskan bagaimana proses JSON bekerja, jika ingin mempelajari tampilan silahkan lihat tulisan saya yang lain sehingga akan lebih fokus.

Data yang diterima dari Biodata.java masih berupa String tetapi memiliki struktur JSON Encode. Dengan memasukkan String tersebut ke dalan JSONArray, maka otomatis data akan tersimpan di dalam array. Tetapi perlu diingat, bahwa data yang kita terima dari mysql adalah data berupa baris dan kolom.

Jika dilihat hasil JSON array, maka akan menyimpan data seperti berikut
array[0] =>  id=1, nama=Jhohannes Purba, alamat=Kabanjahe
array[1] =>  id=2, nama=Berkat Junaidi Banurea, alamat=Sidikalang
array[2] =>  id=3, nama=Totok Bluesman Silalahi, alamat=Medan

Jika kita ingin mengambil data berdasarkan filednya, misalnya hanya menampilkan data dengan isi Jhohannes Purba, berarti kita harus pecah lagi struktur arraynya dengan menggunakan JSONObject. Dengan menggunakan JSONObject maka kita mengambil data berdasarkan fieldnya saja, dan kita bisa melakukan proses selanjutnya.

arrayBiodata = new JSONArray(biodata.tampilBiodata());

for (int i = 0; i < arrayBiodata.length(); i++) {
 JSONObject jsonChildNode = arrayBiodata.getJSONObject(i);
 String name = jsonChildNode.optString("nama");
 String alamat = jsonChildNode.optString("alamat");
 String id = jsonChildNode.optString("id");


Untuk hasilnya Silhakan Lihat Gambar berikut :
Update CRUD
Update CRUD

Home CRUD
Home CRUD
Insert CRUD
Insert CRUD

Komentar

Postingan populer dari blog ini

Aplikasi kamus bahasa isyarat indonesia 1

Aplikasi kamus bahasa isyarat indonesia 2

Aplikasi kamus bahasa isyarat indonesia 3