Kali ini saya ingin share sedikit mengenai cara membuat ListView dari database phpMyAdmin. Kebetulan kemaren-kemaren salah satu rekan dari diskusi android email saya dan bertanya gimana caranya membuat ListView yang datanya dari database phpMyAdmin. Trus jika list tersebut di klik maka akan pindah ke activity lain yang yang menampilkan detail dari list yang di klik tadi...
Kira-kira screenshotnya seperti ini :
Gambar 1. Tampilan List nya |
Gambar 2. Tampilan Detail List nya |
Disini saya buat contoh list region. Kebetulan saya ada kerjaan mengenai region ini jadi sekalian lah saya caplok daripada buat yang baru lagi, capek. Hehhee..
Dan untuk project ini kita hanya membutuhkan 3 class, yaitu: listExample.java, DetailKhsActivity.java & JSONParser.java.
1. listExample.java => Class ini merupakan main dari project ini dan class ini juga yang menampilkan list dari database yang yang ingin ditampilkan.
package nielpoenya.blogspot.com; import java.util.ArrayList; import java.util.HashMap; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; public class listExample extends ListActivity { JSONArray str_login = null; ArrayList> angkatan = new ArrayList >(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.panel_khs); JSONParser jParser = new JSONParser(); String link_url = "http://10.0.2.2:81/siakad-andro/khs.php"; JSONObject json = jParser.AmbilJson(link_url); try { str_login = json.getJSONArray("info"); for (int i = 0; i < str_login.length(); i++) { JSONObject ar = str_login.getJSONObject(i); String jdl = ar.getString("RegionName"); String id = ar.getString("RegionID"); HashMap map = new HashMap (); map.put("jdl", jdl); map.put("id", id); angkatan.add(map); } } catch (JSONException e) { e.printStackTrace(); } // Memanggil method adapter_listview() // Array JSON tadi di tampilkan dalam bentuk list this.adapter_listview(); } public void adapter_listview() { ListAdapter adapter = new SimpleAdapter(this, angkatan,R.layout.list_item,new String[] { "jdl", "id"}, new int[] {R.id.tangk, R.id.kodeangk}); setListAdapter(adapter); ListView lv = getListView(); // Menangani jika salah satu list di klik // Menampilkan detail dari list yang dipilih lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view,int position, long id) { String kode_ang = ((TextView) view.findViewById(R.id.kodeangk)).getText().toString(); Intent in = new Intent(getApplicationContext(), DetailKhsActivity.class); in.putExtra("kd_smt", kode_ang); startActivity(in); } }); } }
2. DetailKhsActivity => Class ini berfungsi untuk menampilkan atau menangani detail dari list tadi. Jadi misalnya kita memilih/klik salah satu list maka akan ditampilkan detailnya.
package nielpoenya.blogspot.com; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.view.Window; import android.view.WindowManager; import android.widget.TextView; public class DetailKhsActivity extends Activity { public String kode; JSONArray str_login = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.panel_detail_khs); Bundle b = getIntent().getExtras(); kode = b.getString("kd_smt"); String link_url = "http://10.0.2.2:81/siakad-andro/detail-info.php?RegionID="+kode; JSONParser jParser = new JSONParser(); JSONObject json = jParser.AmbilJson(link_url); try { str_login = json.getJSONArray("info"); String jdwl = ""; TextView isi = (TextView) findViewById(R.id.dkhs); for(int i = 0; i < str_login.length(); i++){ JSONObject ar = str_login.getJSONObject(i); jdwl += "RegionID : " + ar.getString("RegionID")+"\n"+ "CustomerID : " + ar.getString("CustomerID")+"\n"+ "RegionName : " + ar.getString("RegionName")+"\n"+ "TrapReceiverID : " + ar.getString("TrapReceiverID")+"\n"+ "Status : " + ar.getString("Status")+"\n"+ "Note : " + ar.getString("Note")+"\n"; } isi.setText(jdwl); } catch (JSONException e) { e.printStackTrace(); } } }3. JSONParser => Kalau class ini sebenarnya class pembantu untuk parse data dari database ke mobile dengan JSON.
package nielpoenya.blogspot.com; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // constructor public JSONParser() { } public JSONObject AmbilJson(String url) { // Making HTTP request try { // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON String return jObj; } }
Gimana codingnya?
Ribet, biasa atau gimana? :D
Kalau nggak mau ribet source projectnya dapat di unduh disini : Membuat ListView dari Database phpMyAdmin di Android
Sumber : http://www.booting09.com
kok detailnya gk muncul ya.?? mohon pencerahannya
ReplyDelete08-04 12:20:56.942 2379-2379/nielpoenya.blogspot.com E/JSON Parser﹕ Error parsing data org.json.JSONException: Unterminated object at character 80 of {"info" : [{"RegionID" : "5", "CustomerID" : "1", "RegionName" : "Kalimantan, "TrapReceiverID" : "05", "Status" : "1", "Note" : ""}]}
kyk gini masalahnya...
Mantaps.. nice makasih penjelasannya..
ReplyDeletetutorialnya bagus ni, file khs.php nya mana ya? link sourcode nya error
ReplyDeletedetail-info.php nya juga gk ada?
ReplyDeletemas untuk linknya rusak... boleh minta kirim projectnya ?
ReplyDeletemalela001@gmail.com thanks mas...
mas linknya mati, minta projectnya aryojiwobaskoro@gmail.com
ReplyDelete