Tutorial ini lanjutan dari tutorial sebelumnya yaitu Android PHP MySQL. Pada tutorial ini kita akan menampilkan listview dari database MySQL yang apabila di klik maka akan menampilkan activity detail dari data tersebut.
Langsung saja kita praktekkan :
Pertama : kita buat database dan bisa menggunakan database yang telah ada pada tutorial sebelumnya
Kedua : kita buat file daftar-wisata.php, detail-wisata.php dan koneksi.php
daftar-wisata.php
<?php include("koneksi.php"); $q = mysql_query('SELECT * FROM daftar'); $v = '{"wisata" : ['; while($r=mysql_fetch_array($q)) { $ob = array('"','<br>','</br>'); if(strlen($v)<15) { $v .= '{"id" : "'.str_replace($ob,' ',strip_tags($r["id_wisata"])).'","nama" : "'.str_replace($ob,' ',strip_tags($r["nama_wisata"])).'","deskripsi" : "'.str_replace($ob,' ',strip_tags($r["deskripsi"])).'","latitude" : "'.str_replace($ob,' ',strip_tags($r["latitude"])).'","longitude" : "'.str_replace($ob,' ',strip_tags($r["longitude"])).'","gambar" : "/'.str_replace($ob,' ',strip_tags($r["gambar"])).'"}'; } else { $v .= ',{"id" : "'.str_replace($ob,' ',strip_tags($r["id_wisata"])).'","nama" : "'.str_replace($ob,' ',strip_tags($r["nama_wisata"])).'","deskripsi" : "'.str_replace($ob,' ',strip_tags($r["deskripsi"])).'","latitude" : "'.str_replace($ob,' ',strip_tags($r["latitude"])).'","longitude" : "'.str_replace($ob,' ',strip_tags($r["longitude"])).'","gambar" : "/'.str_replace($ob,' ',strip_tags($r["gambar"])).'"}'; } } $v .= ']}'; echo $v; ?>
detail-wisata.php
<?php $kd = $_GET['kode']; include("koneksi.php"); $q = mysql_query('SELECT * FROM daftar WHERE id_wisata="'.$kd.'"'); $v = '{"wisata" : ['; while($r=mysql_fetch_array($q)) { $ob = array('"','<br>','</br>'); $v .= '{"id" : "'.str_replace($ob,' ',strip_tags($r["id_wisata"])).'","nama" : "'.str_replace($ob,' ',strip_tags($r["nama_wisata"])).'", "deskripsi" : "'.str_replace($ob,' ',strip_tags($r["deskripsi"])).'", "latitude" : "'.str_replace($ob,' ',strip_tags($r["latitude"])).'", "longitude" : "'.str_replace($ob,' ',strip_tags($r["longitude"])).'", "gambar" : "'.str_replace($ob,' ',strip_tags($r["gambar"])).'"}'; } $v .= ']}'; echo $v; ?>
koneksi.php
<?php //Koneksi ke database $conn = mysql_connect("localhost","root",""); $db = mysql_select_db("db_wisatasulsel"); ?>
Ketiga : buat project androidnya
pada bagian layout terdapat tiga file yaitu main.xml, list_item.xml, single_list_item.xml
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
list_item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="right" android:orientation="vertical" android:padding="7dp" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <!-- Name Label --> <TextView android:id="@+id/nama" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="2dip" android:textColor="#333333" android:textSize="16sp" android:textStyle="bold" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:src="@drawable/arrow" /> <TextView android:id="@+id/kode" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#D7DEF0" android:textSize="1sp" > </TextView> </RelativeLayout> </LinearLayout>
single_list_item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#fff" android:orientation="vertical" android:padding="10dp" > <ImageView android:id="@+id/gambar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:src="@drawable/no_image" /> <TextView android:id="@+id/nama_wisata" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="5dip" android:paddingTop="10dip" android:textColor="#333333" android:textSize="20dip" android:textStyle="bold" /> <TextView android:id="@+id/latitude" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="5dip" android:paddingTop="5dip" android:textColor="#999999" android:textSize="12dip" android:textStyle="bold" /> <TextView android:id="@+id/longitude" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="5dip" android:paddingTop="5dip" android:textColor="#999999" android:textSize="12dip" android:textStyle="bold" /> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/deskripsi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#333333" android:textSize="14dip" /> </ScrollView> </LinearLayout>kemudian kita buat file class java dengan file MainActivity.java, Detail.java dan JSONParser.java MainActivity.java
public class MainActivity extends ListActivity { private static String link_url = "http://10.0.2.2/wisata/daftar-wisata.php"; private static final String AR_ID = "id"; private static final String AR_JUDUL = "nama"; JSONArray wisata = null; ArrayList<HashMap<String, String>> daftar_wisata = new ArrayList<HashMap<String, String>>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); JSONParser jParser = new JSONParser(); JSONObject json = jParser.AmbilJson(link_url); try { wisata = json.getJSONArray("wisata"); for(int i = 0; i < wisata.length(); i++){ JSONObject ar = wisata.getJSONObject(i); String id = ar.getString(AR_ID); String nama = ar.getString(AR_JUDUL); HashMap<String, String> map = new HashMap<String, String>(); map.put(AR_ID, id); map.put(AR_JUDUL, nama); daftar_wisata.add(map); } } catch (JSONException e) { e.printStackTrace(); } this.adapter_listview(); } public void adapter_listview() { ListAdapter adapter = new SimpleAdapter(this, daftar_wisata, R.layout.list_item, new String[] { AR_JUDUL, AR_ID}, new int[] { R.id.nama, R.id.kode}); setListAdapter(adapter); ListView lv = getListView(); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view,int position, long id) { String kode = ((TextView) view.findViewById(R.id.kode)).getText().toString(); Intent in = new Intent(MainActivity.this, Detail.class); in.putExtra(AR_ID, kode); startActivity(in); } }); } }Detail.java
public class Detail extends Activity { private static final String AR_ID = "id"; JSONArray wisata = null; String gambar; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.single_list_item); Intent in = getIntent(); String kode = in.getStringExtra(AR_ID); String link_url = "http://10.0.2.2/wisata/detail-wisata.php?kode="+kode; JSONParser jParser = new JSONParser(); JSONObject json = jParser.AmbilJson(link_url); try { wisata = json.getJSONArray("wisata"); for(int i = 0; i < wisata.length(); i++){ JSONObject ar = wisata.getJSONObject(i); TextView nama = (TextView) findViewById(R.id.nama_wisata); TextView lat = (TextView) findViewById(R.id.latitude); TextView lon = (TextView) findViewById(R.id.longitude); TextView desk = (TextView) findViewById(R.id.deskripsi); String nama_d = ar.getString("nama"); String lat_d = ar.getString("latitude"); String lon_d = ar.getString("longitude"); String desk_d = ar.getString("deskripsi"); nama.setText(nama_d); lat.setText("Latitude : " +lat_d); lon.setText("Longitude : " +lon_d); desk.setText("Deskripsi : " + "\n" + desk_d); }catch (JSONException e){ e.printStackTrace(); } } }JSONParser.java
public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; public JSONObject AmbilJson(String url) { try { 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); } is.close(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } return jObj; } }Jangan lupa tambahkan pada bagian AndroidManifest.xml
Keempat : jalankan aplikasinya...
Gan Bleh Mnta link Souerce Codenya ?
ReplyDeleteSemua source code sudah ada diatas tinggal di copas sj mas bro... (c)
Deleteerorr mas
Deletekenapa ya waktu dijalankan di emulator androidnya malah "unfoturnately, wisata stopped working" itu gara2 apa ya ? mohon infonya. terimakasih
ReplyDeletecoba baca artikel ini mba' http://android-pemula.blogspot.com/2013/01/penyebab-force-close-pada-android.html
Deletemas minta soucenya lengkap ke email noer.uty@gmail.com
ReplyDeleteSemua source code sudah ada diatas tinggal di copas sj mas bro... (c)
Deleteizin sedot ilmu nya (p)
ReplyDeletethanks for sharing :))
semoga berkah (c)
silahkan...... =p~ (c)
Deleteaamiin
sedap tutorial nya...
ReplyDeletemangstap gan ijin sedot ya :)
:) :) :)
Deletekakak...ini punya saya kok data dari databasenya nggamuncul ya,,kira2 ada solusi ngga?trims..
ReplyDeletekoneksi database belum benar coba diperiksa kembali listingx.... :-?
Deletegan,cara dari detail ke maps gmna gan ??
ReplyDeletesudah ada pada source code gan silahkan di utak atik aja..... :d
DeleteThis comment has been removed by the author.
ReplyDeletemas, itu file php di folder mana nyimpennya? di htdocs xampp yah?
ReplyDeletedi htdocs mas.... (c) (c) (c)
Deletegan mau tanya itu bikin file yang .php itu dieclipse nya atau gimana bang? mohon pencerahannya. terima kasih
ReplyDeletebuat file php menggunakan xampp (c)
ReplyDeleteada caranya gak bang, masih belum paham soalnya
Deletedetail.java nya kok error ya
ReplyDelete}catch (JSONException e){
e.printStackTrace();
}
tambahin lg gan tanda } sebelum catch
Deletekenapa ini gak bisa gan ?
ReplyDeleteerror di
wisata = json.getJSONArray("daftar");
Thank gan udah share banyak tutorial buat android.
ReplyDeleteNumpang share gan. Ane buat aplikasi android buat Belajar Matematika SD (saat ini masih untuk kelas III). Soal-soal banyak dan ada kunci jawabannya. Mungkin bisa ditesting dan berguna gan. Bisa dicek di google playstore di link : https://play.google.com/store/apps/details?id=fahim_edu.matematikasd
Terimakasih gan
gan php ane kok eror gini yaa?
ReplyDeleteWarning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Android\wisatakategori.php on line 6
{"wisata" : []}
detail-wisata.php ane ganti namanya jadi wisatakategori.php
perhatijan penulisan listing di database dan koneksinya....
Deletegak ada videonya?
ReplyDeletetidak sempat buat tutorial videonya...
DeleteMin itu nyimpan foto dan text nya dimana ? Saya belum ngerti
ReplyDeletefoto dan text menggunakan file php pak
DeleteMin itu nyimpan foto dan text nya dimana ? Saya belum ngerti
ReplyDeletemksi infonya...
ReplyDeletesy boleh nanya gk min?
menampilkan banyak data dari sql ke listview bgaimana yaa?
misalnya seribu kosakata bgaimana yaa caranya? sharing tutorialnya donk min??
Artikel yang menarik. Indahnya saling berbagi pengetahuan dan keilmuan. Silahkan singgah di blog perkuliahan pemrograman saya:
Deletehttp://rismonhasiholansianipar.blogspot.co.id
http://rhsianipar.blogspot.co.id
http://rismonhsianipar.blogspot.co.id
ketika dijalankan aplikasi keluar 'Unfortunatelt, daftarwisata has stoped', padahal sourcecode udah benar. Gimana itu gan?
ReplyDeleteIni keterangan error dilogcat : java.lang.RuntimeException: Unable to start activity ComponentInfo{com.riza.daftarwisata/com.riza.daftarwisata.MainActivity}: android.os.NetworkOnMainThreadException
DeleteSaya pakai android studio 3.0.1
Delete