Friday, January 24, 2014

Android Database SQLite Tutorial (V) : Membuat Fungsi Cari Data

Ini merupakan tutorial lanjutan dari seri tutorial android sebelumnya (lihat postingan sebelum ini). Jadi kita akan tetap bekerja pada project yang sudah kita buat sebelumnya.
Okeh langsung saja ke step-stepnya:
1. Buat Activity baru dengan nama “CariData” (tanpa tanda petik) dan layout “caridata”. *Silahkan sesuaikan sendiri jika ingin memberi nama sendiri.
2. Selanjutnya kita akan mengatur tampilan layoutnya. Buka folder res/layout pada project kalian dan buka file “caridata.xml”. Isikan kode berikut:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@drawable/bgbiru"
    tools:context=".CariData" >

<EditText android:id="@+id/cari"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:hint="@string/txtcari"
        />

    <Button
        android:id="@+id/btncari"
        android:layout_width="90dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/cari"
        android:layout_toRightOf="@+id/cari"
        android:text="@string/btncari" />
   
<RelativeLayout android:id="@+id/RelativeLayout01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_below="@+id/cari">
       
    <TextView
        android:id="@+id/tvjumlah"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:layout_marginRight="90dp"
         />

    <TextView
        android:id="@+id/tvket"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/tvjumlah"
       
        android:textStyle="bold" />

</RelativeLayout>
<RelativeLayout android:id="@+id/RelativeLayout02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/RelativeLayout01">
    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp" >
    </ListView>
</RelativeLayout>
</RelativeLayout>
3. Buka “strings.xml” dan tambahkan script berikut:
       <string name="btncari">Cari</string>
    <string name="txtcari">Masukkan Nama</string>
    <string name="txtjumlah">Jumlah :</string>
    <string name="txtcaridata">Cari Data</string>
4. Kemudian kita akan menghubungkan activity CariData ke MainMenu supaya jika menu cari data diklik akan tampil activity CariData. Buka MainMenu.java dan ganti scriptnya menjadi seperti berikut:
 package com.aina.dblatihan;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.app.Activity;
import android.content.Intent;

public class MainMenu extends Activity implements OnClickListener{
    private Button btnTambah,btnLihat,btnCari;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainmenu);
        btnTambah = (Button) findViewById(R.id.btntambah);
        btnTambah.setOnClickListener(this);
      
        btnLihat = (Button) findViewById(R.id.btnlihat);
        btnLihat.setOnClickListener(this);
      
        btnCari = (Button) findViewById(R.id.btncari);
        btnCari.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId())
        {
            case R.id.btntambah :
                Intent td = new Intent(this, TambahData.class);
                startActivity(td);
                break;
            case R.id.btnlihat :
                Intent ld = new Intent(this, LihatData.class);
                startActivity(ld);
                break;
            case R.id.btncari :
                Intent cd = new Intent(this, CariData.class);
                startActivity(cd);
                break;
        }
    }
}

5. Selanjutnya buka DBDataSource.java. Kita perlu menambahkan fungsi untuk mencari data mahasiswa dari database. Berikut ini kodenya (Tambahkan pada bagian sebelum kurung tutup terakhir):
 public Cursor cariDataMahasiswa(String cari) {
      
        return database.query(DBHelper.TABLE_NAME, allColumns, "nama like '%"+cari+"%'", null, null, null, null);
    }
    public Cursor hitungDataMahasiswa(String x) {
      
        return database.rawQuery("SELECT count (nama) from tb_mhs WHERE nama LIKE '%"+x+"%'", null);
    }

6. Buka CariData.java lalu sesuaikan scriptnya menjadi seperti berikut:
 package com.aina.dblatihan;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Activity;
import android.database.Cursor;

public class CariData extends Activity implements OnClickListener{
    private DBDataSource dataSource;
    private Button btnCari;
    private EditText etCari;
    private TextView jumlah;
    String cari;
    ListView lvCustomList;
    Cursor cursor,cursor2;
    protected ListAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.caridata);
      
        btnCari = (Button) findViewById(R.id.btncari);
        btnCari.setOnClickListener(this);
        lvCustomList = (ListView) findViewById(R.id.listView1);
        jumlah = (TextView) findViewById(R.id.tvjumlah);
      
         // instanstiasi kelas DBDataSource
        dataSource = new DBDataSource(this);

        //membuat sambungan baru ke database
        dataSource.open();
      
        etCari = (EditText) findViewById(R.id.cari);
      
    }
    @Override
    public void onClick(View v) {
        switch(v.getId())
        {
            case R.id.btncari:
                cariMhs();
                break;
        }
    }
    public void cariMhs(){
        if (etCari.getText().length() == 0){
            //konfirmasi kesuksesan
            Toast.makeText(this, "Silakan Masukkan Nama" , Toast.LENGTH_LONG).show();
            lvCustomList.setAdapter(null);
            jumlah.setText("");
        }else{
        cari = etCari.getText().toString();
        Cursor cursor =  dataSource.cariDataMahasiswa(cari);
        adapter= new SimpleCursorAdapter(this,R.layout.kolom, cursor,
                new String [] {"nama","alamat"},
                new int [] {R.id.nama,R.id.alamat});
        Cursor cursor2 =  dataSource.hitungDataMahasiswa(cari);
        cursor2.moveToFirst();
        if(adapter.isEmpty()){
            Toast.makeText(this, "Data Tidak Ditemukan" , Toast.LENGTH_LONG).show();
            lvCustomList.setAdapter(null);
            jumlah.setText("");
        }else{
            lvCustomList.setAdapter(adapter);
            jumlah.setText("Jumlah : "+cursor2.getInt(0));
        }etCari.setText("");
        }
      
    }
    @Override
    public void onBackPressed() {
        finish();
        dataSource.close();
    }
}

7. Jalankan Aplikasi dan Pilih Menu Cari Data.
    Misalkan kita mencari data mahasiswa yang bernama tina.
   
    Kemudian berikut adalah tampilan ketika data mahasiswa ditemukan.
   
     Selanjutnya kita coba dengan memasukkan nama mahasiswa yang tidak ada  pada daftar mahasiswa.




 Kemudian ketika kita tidak mengisi nama lalu mengeklik button cari, maka akan tampil:

Sekian seri tutorial androidnya.

Fin.
Happy Coding.
Alhamdulillah.
:)



Jum'at, 24 Januari 2014
22:30

18 comments:

  1. bagi codingnya donk bro :-)
    oberlinlingga@gmail.com

    ReplyDelete
  2. Terima kasih telah berbagi,., semoga ilmunya semakin bertambah + berkah,. untuk tutorial sqlite ini ada sourcenya gak ? kalau ada & bisa di bagi, aku minta link + kirim ke email : mulyanayusuf30@gmail.com,.

    ReplyDelete
    Replies
    1. kl untuk menambahkan fungsi search pada listview, terus database nya ada relasi nya tabel 1 dan tabel 2 db sy SQLite, kira2 gmn ya....
      mohon petunjuk nya kl ad project nya boleh sm minta kl g boleh jg gpp,.
      smg bermanfaat, terima kasih modeoff3@gmail.com

      Delete
  3. Selamat pagi...
    Tutorialnya sangat membantu saya mbak Aina. Apabila diperbolehkan saya request programnya di email: blog@aimagu.com
    Terima kasih

    ReplyDelete
  4. mbaki minta source code untuk sqlite dari pertama ampe selesai dung..
    imamchairul76@gmail.com

    ReplyDelete
  5. mba aina tutorialnya sangat bagus, tapi saya masih belum mengerti karena masih awam, klo berkenan saya minta source code nya, tolong kirim ke djoeniar@gmail.com

    ReplyDelete
    Replies
    1. yang nyari source code nya tolong baca di index dari seri tutorial android yang ada di blog saya ini. terima kasih. ^^

      Delete
  6. ini artikel mantap sekali, jika boleh saya minta source code nya bro,.. bisa kasih kirim di email saya vjivandro77@gmail.com. sebelumnya terima kasih dan semoga selalu memberi artikel yang bermanfaat lagi. : )

    ReplyDelete
  7. mbak masih simpen source code nya ? link download 4shared nya udah mati.. jelocantik@gmail.com

    ReplyDelete
  8. Mbak Boleh Mintak Source code nya...
    n.marfiqah@gmail.com

    ReplyDelete
    Replies
    1. link source code ada di index dari seri tutorial android yang ada di blog saya ini. terima kasih..

      Delete
  9. Boleh minta coding.y..
    Kelenyoand93@gmail.com

    ReplyDelete
    Replies
    1. link source code ada di index dari seri tutorial android yang ada di blog saya ini. terima kasih..

      Delete
  10. boleh minta Source codenya mbak??
    kebetulan hampir mirip dgn project yg sy buat...
    elisaademahesa@gmail.com

    ReplyDelete
    Replies
    1. tolong baca di index dari seri tutorial android yang ada di blog saya ini. link untuk source code nya sudah ada disana. terima kasih. ^^

      Delete