Saturday, February 14, 2015

Belajar Android - Fitur Pencarian dan Event Click pada ListView ( Detail Menu )

Catatan kali ini masih tentang listview di android, disini kita membuat fitur pencarian dan detail dari menu listview. fitur pencarian sangat berguna jika data yang ditampilkan dalam list begitu banyak, untuk menghemat waktu dalam menemukan data.

Disini kita juga membuat event click pada listvew, dimana jika salah satu data click pada listview maka akan menampilkan detail data, seperti gambar berikut:


Buat project baru, kemudian tambahkan dua buah layout, disini ane kasih nama activity_cari.xml dan detail_bulan.xml  , dan tambahkan satu Class, disini ane kasih nama DetailBulan seperti gambar di bawah :


Berikut isi xml dari activity_main.xml :



    




Berikut isi xml dari activity_cari.xml:


    
    
    
    



Berikut isi xml dari detail_bulan.xml:


 
    
 
    
 


Berikut Coding pada Class MainActivity :

package com.listviewfiturpencarian.yonandroid;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

public class MainActivity extends Activity {
 
 private ListView listV;
 ArrayAdapter adapter;
 EditText inputSearch;
 
 //ArrayList for LIstView
 ArrayList> bulanList;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_cari);
  //Data Array List Bulan
  String bulan[] = {"January", "February", "Maret", "April", "Mei",
    "Juni", "Juli", "Agustus", "September", "Oktober", "November",
    "Desember" };
  // ambil list_view dan inputsearchnya di xml 
  listV = (ListView) findViewById(R.id.list);
  inputSearch = (EditText) findViewById(R.id.inputSearch);
  
  //proses menambah Array dalam listview
  adapter = new ArrayAdapter(this, R.layout.activity_main,
    R.id.nama_bulan, bulan);
  listV.setAdapter(adapter);
  
  //Detail list item / Event Click
  listV.setOnItemClickListener(new OnItemClickListener(){
   @Override
   public void onItemClick(AdapterView parent, View view, int position, long id){
    String nama_bulan=listV.getItemAtPosition(position).toString();
    Intent intent = new Intent(getApplicationContext(), DetailBulan.class);
    intent.putExtra("nama_bulan", nama_bulan);
    startActivity(intent);
   }
  });
  
  //Kode berikut untuk memfilter/pencarian
  inputSearch.addTextChangedListener(new TextWatcher(){

   @Override
   public void onTextChanged(CharSequence cs, int arg1, int arg2,
     int arg3) {
    // TODO Auto-generated method stub
    MainActivity.this.adapter.getFilter().filter(cs);
   }
   
   @Override
   public void beforeTextChanged(CharSequence arg0, int arg1,
     int arg2, int arg3) {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public void afterTextChanged(Editable arg0) {
    // TODO Auto-generated method stub
    
   }
  });
 }
}


Berikut Coding pada Class DetailBulan :

package com.listviewfiturpencarian.yonandroid;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class DetailBulan extends Activity{
 
 String nama_bulan;
 TextView nmBulan, detBulan;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.detail_bulan);
  
  //ambil textView namabulan da
  nmBulan = (TextView) findViewById(R.id.nama_bulan);
  detBulan = (TextView) findViewById(R.id.detail_bulan);
  
  //ambil parameter nama_bulan dari Intent
  Intent intent = getIntent();
  nama_bulan = intent.getStringExtra("nama_bulan");
  
  //tampilkan nama bulan di textview
  nmBulan.setText(nama_bulan);
  
  //panggil setDetail(String bulan) dan tampilkan
  setDetail(nama_bulan);
  
 }
 //berikut Fungsi SetDetail
 public void setDetail(String bulan){
  if(bulan.equalsIgnoreCase("January")){
   detBulan.setText("Bulan Pertama Pada Tahun Berisi 31 hari");
  }else if(bulan.equalsIgnoreCase("February")){
   detBulan.setText("Bulan Kedua Pada Tahun Terdiri dari 28 Hari");
     }else if(bulan.equalsIgnoreCase("Agustus")){
   detBulan.setText("Bulan Kedelapan Pada Tahun");
     }else{
      detBulan.setText("Nama Bulan Tidak Ada Coy");
     }
 }
}


oke sekian, untuk download complate project click here

1 komentar:

Unknown said...

maff gan link nya ngk ada boleh kh ane minta. klo boleh tolong kirim lewat email linknya yaa gan. thanks