Minggu, 01 Maret 2015

Materi Pertemuan 3 (SQLite-libs)

Buat Layoutnya
<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"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/search"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
              
        android:hint="Search..." />

    <ListView
        android:id="@+id/lv_data"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/search" >
    </ListView>

    <TextView
        android:id="@+id/empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/lv_data"
        android:text="Data yang Anda cari tidak ada" />

</RelativeLayout>


Buat Program Javanya
package com.example.contohistilaharti;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
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 implements TextWatcher, OnItemClickListener {
    private EditText search;
    private ListView lv;
    private DatabaseHelper dbHelper;
    private ArrayAdapter<Kamus> adapter;
    private List<Kamus> listKamus;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv = (ListView) findViewById(R.id.lv_data);
        lv.setEmptyView(findViewById(R.id.empty));
        search = (EditText) findViewById(R.id.search);
        dbHelper = DatabaseHelper.getInstance(this);
        setData();
        search.addTextChangedListener(this);
        lv.setOnItemClickListener(this);

    }

    private void setData() {
        listKamus = dbHelper.getAllKamus();

        adapter = new ArrayAdapter<Kamus>(this,
                android.R.layout.simple_expandable_list_item_1, listKamus);
        lv.setAdapter(adapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position,
            long id) {
        // TODO Auto-generated method stub
        Bundle b = new Bundle();
        b.putString("istilah", adapter.getItem(position).getIstilah());
        b.putString("arti", adapter.getItem(position).getArti());
        Intent i = new Intent(this, ArtiActivity.class);
        i.putExtras(b);
        startActivity(i);
        finish();
    }

    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
            int arg3) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) {
        // TODO Auto-generated method stub
        adapter.getFilter().filter(s.toString());
    }
   
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {       
        switch (item.getItemId()){
        case R.id.action_settings:
            Intent startActivityDictionary = new Intent(this, MainActivity.class);
            startActivity(startActivityDictionary);
            return true;
        case R.id.action_about:
            Intent startActivityAbout = new Intent(this, AboutActivity.class);
            startActivity(startActivityAbout);
            return true;   
        case R.id.action_exit:
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }       
    }

}


Berikut Layout Untuk Menampilkan Istilahnya
<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"
    tools:context=".ArtiActivity" >

    <TextView
        android:id="@+id/istilah"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Istilah" />

    <TextView
        android:id="@+id/garis"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_below="@id/istilah"
        android:background="#000" />

    <TextView
        android:id="@+id/arti"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/garis"
        android:text="Arti" />

</RelativeLayout>


Nah, ini Program Java Untuk Menemukan Istilahnya
package com.example.contohistilaharti;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;

public class ArtiActivity extends Activity {
    private TextView txtArti, txtIstilah;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_arti);      
        Bundle b = getIntent().getExtras();
        txtIstilah = (TextView) findViewById(R.id.istilah);
        txtArti = (TextView) findViewById(R.id.arti);      
        txtIstilah.setText(b.getString("istilah"));
        txtArti.setText(b.getString("arti"));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.arti, menu);
        return true;
    }

}


Ingat! Program Istilah-Arti ini butuh class untuk memanggil data di database. Kita butuh dua class, yaitu class untuk deklarasi database, "DatabaseHelper.java"
package com.example.contohistilaharti;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;

public class DatabaseHelper extends SQLiteAssetHelper {
    private static final String DB_NAME = "db_kamus2";
    private static final int DB_VER = 1;

    private static final String TB_DATA = "tb_kamus";
    public static final String COL_ID = "_id";
    public static final String COL_ISTILAH = "istilah";
    public static final String COL_ARTI = "arti";

    private static DatabaseHelper dbInstance;
    private static SQLiteDatabase db;

    private DatabaseHelper(Context context) {
        super(context, DB_NAME, null, DB_VER);
    }

    public static DatabaseHelper getInstance(Context context) {
        if (dbInstance == null) {
            dbInstance = new DatabaseHelper(context);
            db = dbInstance.getWritableDatabase();
        }
        return dbInstance;
    }

    @Override
    public synchronized void close() {
        super.close();
        if (dbInstance != null) {
            dbInstance.close();
        }
    }

    public List<Kamus> getAllKamus() {
        List<Kamus> lisKamus = new ArrayList<Kamus>();

        Cursor cursor = db.query(TB_DATA, new String[] { COL_ID, COL_ID,
                COL_ARTI, COL_ISTILAH }, null, null, null, null, COL_ISTILAH);
        if (cursor.getCount() >= 1) {
            cursor.moveToFirst();

            do {
                Kamus kamus = new Kamus();
                kamus.setArti(cursor.getString(cursor
                        .getColumnIndexOrThrow(COL_ARTI)));
                kamus.setIstilah(cursor.getString(cursor
                        .getColumnIndexOrThrow(COL_ISTILAH)));
                lisKamus.add(kamus);

            } while (cursor.moveToNext());
        }
        return lisKamus;

    }
}



Dan class untuk menangani operasi set-get datanya, "Kamus.java"
package com.example.contohistilaharti;

public class Kamus {
    private String istilah;
    private String arti;

    public String getIstilah() {
        return istilah;
    }

    public void setIstilah(String istilah) {
        this.istilah = istilah;
    }

    public String getArti() {
        return arti;
    }

    public void setArti(String arti) {
        this.arti = arti;
    }

    @Override
    public String toString() {
        return this.istilah;
    }
}



fileDb
fileAssetHelper

Tidak ada komentar:

Posting Komentar