Search Menggunakan JSON Parsing Android

8:42 AM

Pada postingan sebelumnya, saya pernah membahas bagaimana melakukan JSON Parsing pada pemrograman android. .

Ketika kita berhadapan dengan data yang cukup banyak, tidak efektif jika kita harus menampilkan semua data, entah itu dalam format peta, list, dsb. User akan kebingungan jika dihadapkan dengan semua data, padahal user hanya membutuhkan data tertentu saja. .
Data yang tidak berguna bagi user dianggap sama seperti sampah saja. .
Oleh karena itu sekarang akan dibahas bagaimana cara membuat fitur search pada pemrograman android, tentu saja masih memanfaatkan JSON Parsing untuk mengambil data pada Web Service..

Search Menggunakan JSON Parsing Android


Kita mulai saja, pertama kita ubah web service kita menjadi seperti berikut:

apakah ada yang beda dengan web service yang kita buat sebelumnya??
ya, ada perbedaan pada web service sederhana yang kita buat kali ini
$a=$_GET['name'];
terdapat variabel yang berisi nilai Http Get disini, variabel ini dibutuhkan untuk menyimpan keywords search yang dikirimkan oleh aplikasi android yang akan kita buat nantinya.
Setelah itu mari kita lihat kode sql nya
$sql = "SELECT * FROM toilet WHERE name LIKE '%$a%'";
Terdapat SQL Like disana, LIKE berfungsi untuk menampilkan hasil query yang cocok sebagian, asalkan ada bagian kata yang cocok, maka akan dikeluarkan pada hasil query.

Setelah itu mari kita langsung ke code java untuk membuat aplikasi android nya. .

Kode diatas adalah kode MainActivity.java, FYI disini saya membuat 3 activity untuk keperluan lebih lanjut, dan xml dari main_activity.xml adalah
Main Activity disini sebenarnya hanya saya gunakan sebagai menu utama saja, biar seperti aplikasi android sungguhan, hehe . .

Sekarang kita buat Activity Search
Berikut xml code nya
Jangan lupa tambahkan juga list_view.xml untuk menampilkan listview hasil search pada Activity Search ini.. berikut kode xml nya
Setelah itu berikut kode Search.java nya
Jika kita lihat lagi pada list_view.xml khususnya bagian TextView dengan id price, terdapat atribut
android:visibility="gone"
atribut ini digunakan supaya TextView dengan id price tidak ditampilkan, TextView ini akan ditampilkan nanti setelah Hasil dari pencarian di klik. .


Setelah itu mari kita buat Activity Detail untuk menampilkan detail data setelah data yang keluar di klik. .
Berikut xml layout nya. .
Setelah itu modifikasi Detail.java menjadi seperti berikut:
Jangan lupa juga menambahkan class JSON Parsing seperti pada tutorial sebelumnya, dan juga memberikan permission internet pada android manifest.
Jika menggunakan localhost ganti url nya dengan IP address localhost anda. .
Berikut Hasil Aplikasi yang kita buat jika dijalankan
search android parsing JSONsearch android parsing JSON


search android parsing JSON
































Semoga Bermanfaat, ^^ GBU

You Might Also Like

52 comments

  1. kalo mau nambahin button buat nampilin koordinatnya di google maps gmn caranya ya mas?

    ReplyDelete
    Replies
    1. Kalo nambah button di atas mapnya saya belum pernah,
      Tapi biasanya saya ngasi space di paling bawah buat button..
      Strukturnya jadi kayak gini
      LinearLayout
      Fragment
      Button

      Delete
  2. Untuk reset listviewnya gimana??
    kalo klik 2 kali searchnya kan jadi nampil 2 data yang sama.

    ReplyDelete
    Replies
    1. Pas di method searchtoi
      dikasi toiletList.clear();
      buat ngosongin arraylist sebelumnya.

      Delete
  3. Kalo datanya ga ketemu di databasenya terus gimana?
    Uda nyoba malah loading nyari data terus
    Kalo buat dialog warning pas g ketemu datanya bisa g? hhe

    ReplyDelete
    Replies
    1. bisa, ganti aja yang toast error getting data pake dialog alert, . .

      Delete
  4. bang, mau tanya saya udah coba nih tapi error getting data, kira2 apa yg salah ya?, mohon pencerahannya..

    ReplyDelete
    Replies
    1. Kalau error getting data kemungkinan error nya bukan di kodingan javanya, tapi di PHP service nya. .
      apakah struktur JSON nya sudah compatible untuk di parser pada androidnya.. ?
      Atau mungkin bisa saja service nya sedang down, coba cek dulu di browser PHP service nya, apakah data json nya keluar atau tidak. .

      Delete
    2. This comment has been removed by the author.

      Delete
    3. semuanya udah lancar pas dicek datanya keluar, oh iya di bagian urlget itu maksudnya diisi keyword tertentu apa ya?, mohon pencerahannya terima kasih... :)

      Delete
    4. urlget itu buat akses ke web service kita. .
      kan itu ada variabel $a (di web service php nya)
      nah keyword tertentu itu yang nantinya dilempar ke variabel $a buat pencarian lewat sql nya. .

      Delete
  5. mau tanya dunk mas...
    giamana caranya berpindah activity menggunakan listview yang sudah terisi data array dari database mysql???
    mohon pencerahannya!!
    ^_^

    ReplyDelete
    Replies
    1. maksudnya gimana??
      kayak yang diatas itu. .
      listview nya di tap terus masuk ke detail?

      Delete
    2. mas saya sudah nyoba kok dilog cat nilainya true tpi datanya enggk muncul y mas

      Delete
    3. apakah struktur json nya sama dengan yang punya saya diatas??
      dicek di browser keluarnya gimana?

      Delete
  6. kok error getting data ya mas.. yang salah bagian apa ? script sudah sesuai

    logcat kayak gini :
    Error parsing data org.json.JSONException: Value <?xml of type java.lang.String cannot be converted to JSONObject

    ReplyDelete
    Replies
    1. itu biasanya salah di struktur jsonnya, sudah cek output jsonnya di browser?

      Delete
    2. sudah bisa tetapi ada masalah lagi yaitu error getting data. Server juga sudah coba ganti ke local tetep tidak bisa. Apanya ya ?

      Delete
    3. Permission internet di manifest bagaimana?

      Delete
  7. tanya mas kalau phpnya di jalanin kayak gimana ?

    kayak gini ya?
    {"success":0,"message":"Tidak Ada Data"}

    ReplyDelete
  8. mas itu jsonParser nya dimana ya?

    ReplyDelete
    Replies
    1. di sini http://sleepingtux.blogspot.com/2013/11/json-parsing-pada-pemrograman-android.html

      Delete
  9. kk,saya kok eror converting data si?? kyak gini ni log nya.

    07-06 17:35:27.656: E/a(17722): http://databudaya.net/index.php/databudaya/default/Apiquerysearch?query=banyumas
    07-06 17:35:27.804: D/dalvikvm(17722): GC_CONCURRENT freed 537K, 47% free 3519K/6535K, external 544K/1040K, paused 4ms+5ms
    07-06 17:35:27.929: E/JSON Parser(17722): Error parsing data org.json.JSONException: Value [{"kecamatan":"Banyumas","provinsi":"Jawa Tengah","jenis":"Masjid","nama":"Masjid Agung Banyumas ","long":"109.293161","kabupaten":"Banyumas","desa":"Sudagaran","lat":"-7.516823"}] of type org.json.JSONArray cannot be converted to JSONObject
    07-06 17:35:27.937: E/status(17722): false

    mohon pencerahannya kk...
    :(

    ReplyDelete
  10. alhamdulilahhhhhhh sudah jalan searchnya mas.hehe
    mas mu nanya kalo pas diklik kan dia lari ke detail,nah itu kan ada latitude sama longitude nya,gmna caranya pas diklik lari ke detail dan di detail itu ada map yg menampilkan data lat long yg diklik mas...
    gmn tu mas?
    bingung saya...
    mohon pencerahannya kk...
    :(

    ReplyDelete
    Replies
    1. ya tinggal pake google maps. .
      terus buat marker set position nya di latitude longitude yang di detail itu. .
      coba pelajarin google maps API android. .

      Delete
    2. mas ko saat di debug di emulator saat di tekan button search ga masuk ke aktivity pencarian yah?

      dan error dibagian ini..
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
      Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.detail, menu);
      return true;

      Delete
    3. Hapus aja gan, kita engga pake itu di tutorial ini, itu code bawaan dari eclipse nya

      Delete
  11. mas....boleh minta pprojectnya ???

    ReplyDelete
  12. This comment has been removed by the author.

    ReplyDelete
  13. mastah bisa share aplikasinya soalnya saya udah 2x nyoba fail terus saya coba rubah2 dengan apa yang saya tahu malah berantakan

    ke email : iamnotimo99@gmail.com

    buat bahan pembelajaran lebih lanjut makasih :)

    ReplyDelete
  14. mas, gimana caranya agar hasil pencarian tampil diclass lain, atau activity lain...
    tpi bukan di class search.java...
    mohon pencerahan nya mas...
    sebelumnya terima kasih ....:)

    ReplyDelete
    Replies
    1. itu mudah aja gan. .
      itu kan hasil pencarian nya udah di simpan di toiletList
      ganti isi dari tampilkandata() atau buat method baru lah yang isinya intent yang bawa variabel toiletlist ke class lain..

      terus di class lain itu, tinggal get Intent data toiletlist..
      setelah itu tinggal di tampilkan. .

      itu logikanyaa, untuk codingannya bisa di utak atik sendiri dulu. .
      pelajari arraylist dan intent biar ngerti gan. .

      Delete
  15. Maaf mas saya mau tanya. Saya sudah coba tutorialnya, dan ketika di tekan tombol search kenapa muncul error ini "org.json.JSONException: No value for longitude" ya? Kira-kira kenapa ya mas? Soalnya saya cek di file java dan xml nya tidak ada yang error. Terimakasih sebelumnya.

    ReplyDelete
    Replies
    1. itu masih pake webservice saya?? webservice saya sudah tidak bisa lagi soalnya..

      Delete
    2. Itu sudah pake localhost mas. Sy sudah buat db sendiri yang sesuai. Dan errornya seperti itu mas. Kenapa ya kira2? padahal valuenya ada.

      Delete
    3. nama-nama variabel nya udah bener kah?
      itu masalahnya ketika pencet tombol search? kalo tidak menggunakan search muncul engga di listviewnya?

      Delete
    4. Kalau tidak menggunakan search, tidak muncul mas listviewnya. mohon pencerahannya mas. Masih pemula. :D

      Delete
    5. coba baca blog ini
      http://www.androidhive.info/2012/01/android-json-parsing-tutorial/

      Delete
  16. Terima Kasih, sangat membantu...
    meskipun ribet... benerin ini dan itu.. :D

    ReplyDelete
  17. Boleh minta projetny mas ?
    pusing udah coba" ga bisa juga.
    juandarudi@yahoo.co.id

    ReplyDelete
  18. mas, pas pencarian dengan dua kata kok malah error ya ?

    ReplyDelete
    Replies
    1. iya itu karna spacenya tidak kebaca....
      coba edit sama tambah ini di method searchtoi nya

      String src = editSearch.getText().toString();
      src = src.replace(" ", "+");

      itu supaya space diganti oleh +

      Delete
  19. JSONParser cannot be resolved to a type, gimana ya om?

    ReplyDelete
  20. klo implementasi nya ke google maps v2 gmn ya mas. makasih.

    ReplyDelete
  21. mas boleh minta projectnya ?
    udah cobak 2 minggu gk bisa"

    wcahyo90@gmail.com

    terima kasih sebelumnya mas

    ReplyDelete
  22. method getListView itu merujuk kemana gan?

    ReplyDelete
  23. Bagaimana caranya untuk merubah warna textview based on Json, misal jika price 30000 maka warna textview nya merah, jika selain itu warna textviewnya abu2..

    ReplyDelete
  24. bang klo saya input data yg gk ada di database kok pdialognya gak mau hilang ya??
    saya cek di logcatnya statusnya true padahal saya nginput data yg salah..
    saya pikir kesalahan pada koding if json

    JSONObject json = jParser.getJSONFromUrl(urlget);
    if(json==null)
    {
    a=false;
    }
    else a=true;
    return json;

    kondisinya kira" gmn yg cocok utk ngatasin masalah ini bang?? atau yg pada tau solusinya?
    mohon bantuannya..terima kasih

    ReplyDelete
  25. mas, yang JSONParser classnya itu katanya yg koding httpclient itu udh ngk berlaku ya? alternatifnya gimana mas?

    ReplyDelete
    Replies
    1. ini tutorial lama, silakan cari2 di androidhive untuk tutorial yang baru, saya udah lama engga ngikutin perkembangan pemrograman android, thanks

      Delete