Minggu, 06 Januari 2013

Aplikasi Android Menampilkan Data, View Database SQLite


Setelah berhasil Membuat Aplikasi Android untuk Mengakses Data dalam Bentuk JSON dari Web PHP dengan Database MySQL. Kali ini kita coba Membuat Aplikasi Android dengan Database SQLite.

Karena aplikasi ini cukup panjang. Penulis membagi menjadi 4 bagian :
1. Menampilkan Data dari Database SQLite di Android
2. Menambahkan Data ke Database SQLite di Android.
3. Mengedit / Update Data ke Database SQLite di Android.
4. Menghapus Data di ke Database SQLite di Android.

Sedangkan source code program yang penulis sharing dan bisa didownload di bawah sudah lengkap keempat bagian tersebut. Silakan didownload pada link di bawah.

Pada artikel ini kita bahas bagian pertama yaitu Membuat Aplikasi Android untuk Menampilkan Data dari Database SQLite.

Pertama kita buat dahulu sebuah Class bernama SQLHelper yang bertugas untuk Membuat Database SQLite ketika pertama kali Aplikasi dijalankan, dan bertanggunjawab untuk memanggil database tersebut dalam mode Read maupun Write ketika dibutuhkan.

SQLHelper.java

package com.amijaya.databasesqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

//http://cariprogram.blogspot.com
//nuramijaya@gmail.com

public class SQLHelper extends SQLiteOpenHelper{

private static final String DATABASE_NAME = "db.db";
private static final int DATABASE_VERSION = 1;

public SQLHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}


@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table kota( id integer primary key autoincrement, nama text null, " +
"latitude text null, longitude text null);";
Log.d("Data", "onCreate: " + sql);
db.execSQL(sql);
sql = "INSERT INTO kota (id, nama, latitude, longitude) VALUES (1, 'Yogyakarta', '111', '222');";
db.execSQL(sql);
sql = "INSERT INTO kota (id, nama, latitude, longitude) VALUES (2, 'Surakarta', '333', '444');";
db.execSQL(sql);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)                           {
// TODO Auto-generated method stub

}

}

Program utama kita letakkan di MainActivity

MainActivity.java

package com.amijaya.databasesqlite;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;

// http://cariprogram.blogspot.com
// nuramijaya@gmail.com

public class MainActivity extends Activity {
String[] daftar; // = {"Wisata Candi", "Wisata Pantai", "Wisata Alam"};
ListView ListView01;
Menu menu;
protected Cursor cursor;
SQLHelper dbHelper;
public static MainActivity ma;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        ma = this;
        
        dbHelper = new SQLHelper(this);

RefreshList();
    }
    
    public void RefreshList()
    {
    SQLiteDatabase db = dbHelper.getReadableDatabase();

cursor = db.rawQuery("SELECT * FROM kota",null);

daftar = new String[cursor.getCount()];
cursor.moveToFirst();
for (int cc=0; cc < cursor.getCount(); cc++)
{
cursor.moveToPosition(cc);
daftar[cc] = cursor.getString(1).toString();
}

    ListView01 = (ListView)findViewById(R.id.ListView01);
        ListView01.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, daftar));
        ListView01.setSelected(true);
        ListView01.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
final String selection = daftar[arg2]; //.getItemAtPosition(arg2).toString();
    final CharSequence[] dialogitem = {"Edit", "Delete"};
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
       builder.setTitle("Pilih ?");
       builder.setItems(dialogitem, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch(item){
case 0 :
Intent i = new Intent(getApplicationContext(), EditActivity.class); 
i.putExtra("nama", selection);
    startActivity(i);

break;
case 1 :
/*SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("delete from kota where nama = '"+selection+"'");
       RefreshList();*/
break;
}
}
});
       builder.create().show();
}});

        
        ((ArrayAdapter)ListView01.getAdapter()).notifyDataSetInvalidated();   
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    this.menu = menu;
   
    menu.add(0, 1, 0, "Tambah").setIcon(android.R.drawable.btn_plus);
    menu.add(0, 2, 0, "Refresh").setIcon(android.R.drawable.ic_menu_rotate);
        menu.add(0, 3, 0, "Exit").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
    return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case 1:
        /*Intent i = new Intent(MainActivity.this, AddActivity.class);
        startActivity(i);*/
            return true;
        case 2:            
            RefreshList();         
    return true;
        case 3:
            finish();
            return true;
        }
    return false;
    }

}

Kemudian tampilannya kita pakai saja tampilan default kemudian ditambah satu buah ListView dengan nama ListView01 :

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Database SQLite"
    />
<ListView android:id="@+id/ListView01" android:layout_width="match_parent" android:layout_height="wrap_content"></ListView>
</LinearLayout>

Pada AndroidManifest.xml tidak perlu diubah :

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.amijaya.databasesqlite"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
<!--activity android:name=".AddActivity"
                  android:label="@string/app_name">
        </activity>
        <activity android:name=".EditActivity"
                  android:label="@string/app_name">
        </activity-->
    </application>
    <uses-sdk android:minSdkVersion="8" />

</manifest>

Hasilnya



Project selengkapnya silakan didownload disini :
https://docs.google.com/open?id=0B4i1FYc_4RXzRk04d0NhQlE4OGs

Semoga bermanfaat, Selamat Coding.

Artikel Selanjutnya Aplikasi Android untuk Menambahkan Data ke Database SQLite