
Langkah pertama kita menyiapkan sebuah class Entity, yakni class Contact.java. Didalam kelas ini saya mendeklarasikan kolom2 yang akan ada di dalam database nanti, berikut ini classnya :
packagecom.example.sqlitetutorials;publicclassContact{privateintid;privateString name;privateString telp;publicContact(){// TODO Auto-generated constructor stub}publicContact(String name, String telp){super();this.name = name;this.telp = telp;}publicintgetId(){returnid;}publicvoidsetId(intid){this.id = id;}publicString getName(){returnname;}publicvoidsetName(String name){this.name = name;}publicString getTelp(){returntelp;}publicvoidsetTelp(String telp){this.telp = telp;}}
Kemudian, kita menyiapkan sebuah class untuk mengHandle database kita,
pada class ini akan berisi operasi CRUD (Create, Read, Update, Delete)
didalam class ini terdapat inner class yang saya extends ke class
SQLiteOpenHelper yang sudah disiapkan oleh android.
packagecom.example.sqlitetutorials;importandroid.content.ContentValues;importandroid.content.Context;importandroid.database.Cursor;importandroid.database.SQLException;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandroid.util.Log;publicclassDBAdapter{privatestaticfinalString DB_NAME ="contact_db";privatestaticfinalintDB_VER =1;publicstaticfinalString TABLE_NAME ="contact";publicstaticfinalString COL_ID ="_id";publicstaticfinalString COL_NAME ="name";publicstaticfinalString COL_TELP ="telp";privatestaticfinalString TAG ="ContactDBAdapter";privateDatabaseHelper dbHelper;privateSQLiteDatabase db;privatestaticfinalString DB_CREATE ="create table contact (_id integer primary key, name text not null, telp text not null);";privatefinalContext context;privatestaticclassDatabaseHelperextendsSQLiteOpenHelper{publicDatabaseHelper(Context context){// TODO Auto-generated constructor stubsuper(context, DB_NAME,null, DB_VER);}@OverridepublicvoidonCreate(SQLiteDatabase db){// TODO Auto-generated method stubdb.execSQL(DB_CREATE);}@OverridepublicvoidonUpgrade(SQLiteDatabase db,intoldVersion,intnewVersion){// TODO Auto-generated method stubLog.d(TAG,"upgrade DB");db.execSQL("DROP TABLE IF EXISTS "+ TABLE_NAME);onCreate(db);}}publicDBAdapter(Context context){this.context = context;// TODO Auto-generated constructor stub}publicDBAdapter open()throwsSQLException{dbHelper =newDatabaseHelper(context);db = dbHelper.getWritableDatabase();returnthis;}publicvoidclose(){dbHelper.close();}publicvoidcreateContact(Contact contact){ContentValues val =newContentValues();val.put(COL_NAME, contact.getName());val.put(COL_TELP, contact.getTelp());db.insert(TABLE_NAME,null, val);}publicbooleandeleteContact(intid){returndb.delete(TABLE_NAME, COL_ID +"="+ id,null) >0;}publicCursor getAllContact(){returndb.query(TABLE_NAME,newString[]{COL_ID, COL_NAME, COL_TELP},null,null,null,null,null);}publicCursor getSingleContact(intid){Cursor cursor = db.query(TABLE_NAME,newString[]{COL_ID, COL_NAME, COL_TELP}, COL_ID +"="+ id,null,null,null,null);if(cursor !=null)cursor.moveToFirst();returncursor;}publicbooleanupdateContact(Contact contact){ContentValues val =newContentValues();val.put(COL_NAME, contact.getName());val.put(COL_TELP, contact.getTelp());returndb.update(TABLE_NAME, val, COL_ID +"="+ contact.getId(),null) >0;}}
Kemudian untuk tampilan, ketika program pertama kali dijalankan , akan
muncul daftar contact yang ada, jika tidak ada/ belum ada contact yang
ditambahkan maka akan menampilkan teks empty data, selain itu saya juga
menggunakan menu context yang dapat diakses user dengan menekan tombol
menu pada handset, dengan menekan tombol menu maka akan muncul pilihan
untuk menambah data Contact packagecom.example.sqlitetutorials;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.Intent;importandroid.database.Cursor;importandroid.support.v4.widget.SimpleCursorAdapter;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.AdapterView.OnItemClickListener;importandroid.widget.EditText;importandroid.widget.ListView;publicclassMainActivityextendsActivityimplementsOnItemClickListener{publicstaticfinalString KEY_ID ="_id";privatestaticfinalintINSERT_ID = Menu.FIRST;EditText empty;privateListView listview;privateDBAdapter db;@OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);db =newDBAdapter(this);db.open();listview = (ListView) findViewById(R.id.list);listview.setEmptyView(findViewById(R.id.empty));listview.setOnItemClickListener(this);loadData();}privatevoidloadData(){// TODO Auto-generated method stubCursor cur = db.getAllContact();String[] from =newString[]{DBAdapter.COL_NAME, DBAdapter.COL_TELP};int[] to =newint[]{R.id.txtName, R.id.txtPhoneNumber};SimpleCursorAdapter adapter =newSimpleCursorAdapter(this, R.layout.list_adapter, cur, from, to);listview.setAdapter(adapter);}@OverridepublicbooleanonCreateOptionsMenu(Menu menu){// Inflate the menu; this adds items to the action bar if it is present.menu.add(0, INSERT_ID,0, R.string.menu_add);returntrue;}@OverridepublicbooleanonOptionsItemSelected(MenuItem item){// TODO Auto-generated method stubswitch(item.getItemId()){caseINSERT_ID:startActivity(newIntent(MainActivity.this, AddContact.class));break;}returnsuper.onOptionsItemSelected(item);}@OverridepublicvoidonItemClick(AdapterView<!--?--> arg0, View v,intpos,longid){// TODO Auto-generated method stubBundle bundle =newBundle();bundle.putLong(KEY_ID, id);Intent intent =newIntent(MainActivity.this, EditActivity.class);intent.putExtras(bundle);db.close();startActivity(intent);}}
dan untuk file xmlnya sebagai berikut : <relativelayoutxmlns: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=".MainActivity"><listviewandroid:id="@+id/list"android:layout_width="match_parent"android:layout_height="wrap_content"></listview><textviewandroid:id="@+id/empty"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Empty Data"></textview></relativelayout>
dan untuk class yang menangani penambahan data adalah sebagai berikut :
packagecom.example.sqlitetutorials;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.EditText;publicclassAddContactextendsActivityimplementsOnClickListener{EditText inputName, inputNumber;Button btnAdd;DBAdapter db;@OverrideprotectedvoidonCreate(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);db =newDBAdapter(this);db.open();setContentView(R.layout.add);inputName = (EditText) findViewById(R.id.inputName);inputNumber = (EditText) findViewById(R.id.inputNumber);btnAdd = (Button) findViewById(R.id.btnAdd);btnAdd.setOnClickListener(this);}@OverridepublicvoidonClick(View v){// TODO Auto-generated method stubswitch(v.getId()){caseR.id.btnAdd:Contact contact =newContact();contact.setName(inputName.getText().toString());contact.setTelp(inputNumber.getText().toString());db.createContact(contact);startActivity(newIntent(AddContact.this, MainActivity.class));db.close();finish();break;default:break;}}}
Nah sekarang, aplikasinya sudah jadi, silahkan jalankan program tersebut di emulator, dan lihat hasilnya. Sekian dulu untuk saat ini, semoga bermanfaat.
0 Response to "Membuat Aplikasi Android Database Sqlite dengan Tampilan ListVIew"