Catatan ane kali ini masih tentang pembuatan aplikasi yang di jalankan di android yaitu aplikasi e commerce. Dimana data diambil dari database mysql dengan menguunakan JSONParser. Data berupa gambar dan data lainnya yang biasa di gunakan untuk e commerce gitulah ( lagi ndak semangat bikin catatan sebenarnya nih, bro...:p).
Sebernarnya aplikasi ini mau tak ikutin dalam sebuah project di salah satu situs freelance, tapi otak benar-benar lagi mupeng, logika ndak jalan, jadinya ane share () di mari, silahkan lihat videonya bro:
Disini, data yang diambil dari mysql, ane tampilkan dalam dalam bentuk ListView dan Gridview pada android. Detail dan penambahan menu ane sertakan, Udah langsung aja, bro, lihat tampilannya App-nya seperti di bawah berikut :
Item dengan GridView Menu Bottom
Item dengan ListView AboutUs Dialog
Detail Item
Berikut untuk input data nya di admin panel web e-commerce, bro..
Berikut juga, data di databasenya di localhost, bro...
Karna jika ane tulis codenya begitu panjang, dan berhubung ane juga lagi ndak semangat untuk jelasin, silahkan download dan pelajari aje filenya di mari (kalo ada yang mau seh) -> Download
Sekian aje, ane lagi kangen lihat rembulan menyapa dengan cahaya indahnya (entah kapan, lagi redup kayaknya..!!!)...:p
Kali ini, Ane berbagi catatan tentang membuat aplikasi MyLyric di Android dengan menggunakan bawaan database SQLite di android. Dimana, disini telah di lengkapi dengan fitur CRUD ( Create, Read, Update dan Delete ).
Disini ane memanfaatkan beberapa file XML untuk UI-nya dan beberapa file JAVA, Ane tidak tampilin semua, file-filenya, download aja file lengkapnya di akhir catatatn ini untuk bisa dipelajari atau di kembangkan lagi.
Berikut file main.xml nya:
Berikut file MainActivity.java nya
package com.mylyrik.yonandroid;
import java.util.ArrayList;
import com.mylyrik.yonandroid.adapter.LyrikAdapter;
import com.mylyrik.yonandroid.database.LyrikDB;
import com.mylyrik.yonandroid.model.Lyrik;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends DashBoardActivity {
private ListView lsvLyrikView = null;
private LyrikAdapter adapter = null;
private LyrikDB lyrikdb = null;
private SQLiteDatabase db = null;
private ArrayList listLyrik = null;
private EditText txtSearchText = null;
private TextView txtNoDataLyrik;
AlertDialog.Builder alertDialogConfirmDelete = null;
private Lyrik lyrikIWantToDelete = null;
public static String id = "";
public static String judul = "";
public static String penyanyi = "";
public static String isi = "";
private static void getId(String id) { MainActivity.id = id; }
private static void getJudul(String judul) { MainActivity.judul = judul; }
private static void getPenyanyi(String penyanyi) {MainActivity.penyanyi = penyanyi;}
private static void getIsi(String isi) { MainActivity.isi = isi; }
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
setHeader(getString(R.string.HomeActivityTitle), false, true);
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
txtNoDataLyrik = (TextView) findViewById(R.id.txtNoDataLyrik);
lsvLyrikView = (ListView) findViewById(R.id.lsvListLyrik);
lsvLyrikView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view,int position, long id) {
String _id = ((TextView) view.findViewById(R.id.txtId)).getText().toString();
String _judul = ((TextView) view.findViewById(R.id.txtJudul)).getText().toString();
String _penyanyi = ((TextView) view.findViewById(R.id.txtPenyanyi)).getText().toString();
String _isi = ((TextView) view.findViewById(R.id.txtIsi)).getText().toString();
getId(_id);
getJudul(_judul);
getPenyanyi(_penyanyi);
getIsi(_isi);
Intent intent = new Intent(getApplicationContext(), DetailLyrik.class);
overridePendingTransition( R.anim.slide_in_left, R.anim.slide_out_left );
startActivity(intent);
}
});
refreshListAdapter();
registerForContextMenu(lsvLyrikView);
txtSearchText = (EditText) findViewById(R.id.searchText);
txtSearchText.addTextChangedListener( new TextWatcher() {
@Override //we don't need this
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override //we don't need this
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable text) {
refreshListAdapter( text.toString() );
}
});
DialogInterface.OnClickListener dialogConfirmDeleteClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
if( lyrikIWantToDelete != null ) {
Log.i("Log", "item " + lyrikIWantToDelete.getJudul() + " deleted!");
showToast( "item " + lyrikIWantToDelete.getJudul() + " deleted!" );
lyrikdb.delete(lyrikIWantToDelete);
lyrikIWantToDelete = null;
refreshListAdapter();
}
break;
case DialogInterface.BUTTON_NEGATIVE:
//No button clicked
break;
}
}
};
alertDialogConfirmDelete = new AlertDialog.Builder(this);
alertDialogConfirmDelete.setPositiveButton("Yes", dialogConfirmDeleteClickListener);
alertDialogConfirmDelete.setNegativeButton("No", dialogConfirmDeleteClickListener);
}
// TODO Get data from database SQLite
private void getListLyrik() {
lyrikdb = new LyrikDB(getApplicationContext());
adapter = new LyrikAdapter(this);
db = lyrikdb.getWritableDatabase();
lyrikdb.createTable(db, getBaseContext());
//lyrikdb.generateData(db);
}
// TODO We need to refresh adapter for every data update. Without it, ListView will never be refreshed
protected void refreshListAdapter() {
try {
getListLyrik();
} catch(Exception e) {
Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
} finally {
listLyrik = lyrikdb.toArray();
adapter.updatelistLyrik(listLyrik);
lsvLyrikView.setAdapter(adapter);
if (adapter.getCount() == 0) {
txtNoDataLyrik.setVisibility(View.VISIBLE);
} else {
txtNoDataLyrik.setVisibility(View.GONE);
}
}
}
// TODO We need to refresh adapter for every data update. Without it, ListView will never be refreshed
protected void refreshListAdapter(String filterText) {
listLyrik = lyrikdb.toArray( filterText );
adapter.updatelistLyrik(listLyrik);
lsvLyrikView.setAdapter(adapter);
if (adapter.getCount() == 0) {
txtNoDataLyrik.setVisibility(View.VISIBLE);
} else {
txtNoDataLyrik.setVisibility(View.GONE);
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo cmInfo) {
if (v.getId() == R.id.lsvListLyrik) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) cmInfo;
menu.setHeaderTitle(listLyrik.get(info.position).getJudul());
String[] menuItems = { "Update", "Delete" };
for (int menuIndex = 0; menuIndex < menuItems.length; menuIndex++) {
menu.add(Menu.NONE, menuIndex, menuIndex, menuItems[menuIndex]);
}
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int menuItemIndex = item.getItemId();
Lyrik lyrik = listLyrik.get(info.position);
switch (menuItemIndex) {
case 0:
String _id = lyrik.getId();
String _judul = lyrik.getJudul();
String _penyanyi = lyrik.getPenyanyi();
String _isi = lyrik.getIsi();
getId(_id);
getJudul(_judul);
getPenyanyi(_penyanyi);
getIsi(_isi);
Intent intent = new Intent(getApplicationContext(), EditLyrik.class);
overridePendingTransition( R.anim.slide_in_left, R.anim.slide_out_left );
startActivity(intent);
break;
case 1:
lyrikIWantToDelete = lyrik;
alertDialogConfirmDelete.setMessage("Delete " + lyrik.getJudul() + "?");
alertDialogConfirmDelete.show();
break;
}
return true;
}
@Override
protected void onDestroy() {
super.onDestroy();
if ((lyrikdb != null)) {
lyrikdb.close();
}
if (db != null) {
db.close();
}
}
}
Ha, lama rasanya tak update blog tercinta ini. Ibarat makhluk idup kalau ndak di-isi perutnya mungkin dah ko-it, untung aje ini bukan makhluk idup..:p. Akhir-akhir ini ane benar-benar stacknan buat ngoding, karna logika benar ndak jalan, jadilah otak susah bekerja buat ngembangin koding, apalagi project ndak jadi-jadi..haaaa, rasanya tu cammm mana gituuu...:p (alay dah)
Nah barusan ane iseng-iseng bikin aplikasi sederhana dengan Database SQLite bawaan Android, apilikasi nya simpel sih, 10Tips Untuk Pendaki Pemula...kenapa ane bikin app ini? kepikiran tadi habis baca-baca sebuah web yang berisi tips-tips pendakian kegunung (jadi kangen ke gunung euy, pengen lihat rembulan..:p ), so, ya lumayanlah buat nambah posting di blog ini, dari pada ini blog mati kelaparan karna tak di isi..:p
Oke lanjut and langsung aje, Berikut tampilan appnya dari emulator di android ;
Berikut file layout XMLnya :
1. main.xml
2. list_tips.xml
3. detail.xml
Berikut file JAVAnya ;
1. TipsAdapter.java
package com.tipspemula.yonandroid;
import java.util.ArrayList;
import java.util.HashMap;
import com.tipspemula.yonandroid.adapter.TipsAdapter;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends ListActivity {
public static final String YA_ID = "id";
public static final String YA_JUDUL = "judul";
ArrayList> daftar_tips = new ArrayList>();
private SQLiteDatabase db = null;
private DataTips dataDB = null;
private Cursor cursor = null;
private HashMap mapp;
private ListView list;
private TipsAdapter adap;
private String i;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
dataDB = new DataTips(this);
db = dataDB.getWritableDatabase();
dataDB.createTable(db);
dataDB.generateData(db);
getTips();
}
// TODO Auto-generated method stub
private void getTips() {
try {
cursor = db.rawQuery("SELECT * " + "FROM tips", null);
if (cursor.getCount() > 0) {
int indexID = cursor.getColumnIndex("id");
int indexJudul = cursor.getColumnIndex("judul");
cursor.moveToFirst();
do {
String ID = cursor.getString(indexID);
String Judul = cursor.getString(indexJudul);
mapp = new HashMap();
mapp.put(YA_ID, ID);
mapp.put(YA_JUDUL, Judul);
daftar_tips.add(mapp);
cursor.moveToNext();
} while (!cursor.isAfterLast());
}
} finally {
if (cursor != null) {
cursor.close();
}
this.adapter_listview();
}
}
// TODO Auto-generated method stub
private void adapter_listview() {
list = getListView();
adap = new TipsAdapter(this, daftar_tips);
list.setAdapter(adap);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view,int position, long id) {
i = ((TextView) view.findViewById(R.id.id)).getText().toString();
Intent in = new Intent(MainActivity.this, DetailTips.class);
in.putExtra("ID", i);
startActivity(in);
}
});
}
}
2. MainActivity.java
package com.tipspemula.yonandroid;
import java.util.ArrayList;
import java.util.HashMap;
import com.tipspemula.yonandroid.adapter.TipsAdapter;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends ListActivity {
public static final String YA_ID = "id";
public static final String YA_JUDUL = "judul";
ArrayList> daftar_tips = new ArrayList>();
private SQLiteDatabase db = null;
private DataTips dataDB = null;
private Cursor cursor = null;
private HashMap mapp;
private ListView list;
private TipsAdapter adap;
private String i;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
dataDB = new DataTips(this);
db = dataDB.getWritableDatabase();
dataDB.createTable(db);
dataDB.generateData(db);
getTips();
}
// TODO Auto-generated method stub
private void getTips() {
try {
cursor = db.rawQuery("SELECT * " + "FROM tips", null);
if (cursor.getCount() > 0) {
int indexID = cursor.getColumnIndex("id");
int indexJudul = cursor.getColumnIndex("judul");
cursor.moveToFirst();
do {
String ID = cursor.getString(indexID);
String Judul = cursor.getString(indexJudul);
mapp = new HashMap();
mapp.put(YA_ID, ID);
mapp.put(YA_JUDUL, Judul);
daftar_tips.add(mapp);
cursor.moveToNext();
} while (!cursor.isAfterLast());
}
} finally {
if (cursor != null) {
cursor.close();
}
this.adapter_listview();
}
}
// TODO Auto-generated method stub
private void adapter_listview() {
list = getListView();
adap = new TipsAdapter(this, daftar_tips);
list.setAdapter(adap);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view,int position, long id) {
i = ((TextView) view.findViewById(R.id.id)).getText().toString();
Intent in = new Intent(MainActivity.this, DetailTips.class);
in.putExtra("ID", i);
startActivity(in);
}
});
}
}
3. Ada dua file Java lagi yaitu; DataTips.java dan Detail.java, silahkan download aja file lengkapnya disini
Aih, Seharian ngoprek kodeng android, mainin mysql, php and JSON, akhirnya tak tersasa waktu berlalu dari pagi ke pagi. sebelum ane tidur, ane ngepost catatan cara membuat option menu di android aja dari pada kagak diisi nih blog, kasiaannn...:p
Ok, dalam aplikasi android, terdapat 3 menu yang dapat kita gunakan, yaitu : Option Menu, Context Menu dan Submenu. Menu ini sangat penting digunakan untuk
navigasi beberapa activity yang ingin kita tampilkan, karna layar diandroid sangat mini jadilah ini sangat penting bok..
Untuk Posting kali ini ane mengepost mengenai Options Menu
aje, Context Menu dan Submenu akan ane buat catatannya laen kali di posting selanjutnya, belajarnya pelan aje, biar pelan asal SemangArt, apelagi ada rembulan, cihuuyy..(ndak jadi ngantuk deh..:p )
Menurut penerawangan ki kusumo..:), jumlah item yang akan ditampilkan di options
menu, terdapat 2 macam tipe menu yaitu:
- Icon Menu, jika jumlah item 1-6 maka akan tampil sebagai
icon menu
- Expanded Menu, jika jumlah item lebih dari 6 maka menu 6-dst
akan tampil di expanded menu. Pilihan Expanded menu akan ditampilkan pada icon
menu “more” di paling akhir.
Ok, lanjut aja, disini ane menggunakan sebuah layout dari XML dengan nama activity_menu.xml untuk menampilkan Option Menu, di mana file ini disimpan di res/menu/namafilenya, berikut code XML nya :
Dan berikut code untuk menampilkan Option Menu yang di letakkan di MainActivity :
Dan, Code untuk mengEksekusi menu dari XML diatas sebagai berikut :
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case R.id.id_home:
// code for Login
return true;
case R.id.id_setting:
// code for Setting
return true;
case R.id.id_about:
// code for About
return true;
case R.id.id_search:
// code for Login
return true;
case R.id.id_view:
// code for Setting
return true;
case R.id.id_exit:
// code for About
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Berikut Tampilan hasilnya, gambar pertama tanpa menu, dan gambar kedua setelah diclick tombol menu muncullah menunya.. taratarataraaa...
Tampilan Awal tanpa Option Menu
Tampilan dengan Option Menu seteleah diclick tombol menu
Udah sekian dulu catatan singkatnya, sebagai pengingat aja kalau-kalau nanti ane lupa, dan mana tw ada yang lagi nyari juga bikin option menu di android dan kagak ngerti...hohoho...
Catatan kali ini ane membuat tentang SQLite. Dimana SQLite merupakan tempat penyimpanan data seperti SMS, Contact telpon dan lain sebagainya deh. SQLite ini bawaan resmi dari android, untuk lebih jelas, Apa itu SQLite baca aje ye di situs resminya android disini
Ok bro langsung aje, disini ane membuat pengolahan data siswa dengan SQLite di android (ye iye lah di android, temanya aje Belajar Android...:) ), dimana berikut tampilan akhirnya setelah jadi :
Beikut file XML dari activity_main.xml :
>
Berikut file XML dari list_siswa.xml
Breikut file CLass dari MainActivity
package com.crudlistviewsqlite;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class MainActivity extends ListActivity {
Intent intent;
TextView siswaId;
DatabaseControl dbcontrol = new DatabaseControl(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ambil data siswa dari Database.getAllsiswa
ArrayList> siswaList = dbcontrol.getAllsiswa();
//jika data ada tampilkan data siswa di listview
if (siswaList.size() != 0) {
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView parent,View view, int position, long id){
siswaId = (TextView) view.findViewById(R.id.tvIdSiswa);
String valsiswaId = siswaId.getText().toString();
Intent objintent = new Intent(getApplicationContext(), EditSiswaActivity.class);
objintent.putExtra("siswaId", valsiswaId);
startActivity(objintent);
}
});
ListAdapter adapter = new SimpleAdapter(MainActivity.this,
siswaList, R.layout.list_siswa, new String[]{
"siswaId", "namaSiswa", "jurusan", "alamat"}, new int[] {
R.id.tvIdSiswa, R.id.tvNamaSiswa, R.id.tvJurusan, R.id.tvAlamat});
setListAdapter(adapter);
}
}
//tambah Siswa, jika mengklik tombl plus
public void TambahSiswa(View view){
Intent objintent = new Intent(getApplicationContext(),
SiswaBaruActivity.class);
startActivity(objintent);
}
}
Berikut file Class dari DatabaseControl
package com.crudlistviewsqlite;
import java.util.ArrayList;
import java.util.HashMap;
import android.util.Log;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseControl extends SQLiteOpenHelper{
private static final String LOGCAT = null;
public DatabaseControl(Context applicationcontext) {
super(applicationcontext, "siswa.db", null, 1);
// TODO Auto-generated constructor stub
Log.d(LOGCAT, "Created");
}
// TODO Auto-generated method membuat tabel Siswa
@Override
public void onCreate(SQLiteDatabase database) {
String query;
query = "CREATE TABLE siswa ( siswaId INTEGER PRIMARY KEY, " +
" namasiswa TEXT, jurusan TEXT, alamat TEXT)";
database.execSQL(query);
Log.d(LOGCAT,"siswa Created");
}
// TODO Auto-generated method Upgrade tabel siswa
@Override
public void onUpgrade(SQLiteDatabase database, int version_old, int current_version) {
String query;
query = "DROP TABLE IF EXISTS siswa";
database.execSQL(query);
onCreate(database);
}
//kode insert data ke dalam tabel siswa
public void TambahSiswa(HashMap queryValues){
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("namaSiswa", queryValues.get("namaSiswa"));
values.put("jurusan", queryValues.get("jurusan"));
values.put("alamat", queryValues.get("alamat"));
database.insert("siswa", null, values);
database.close();
}
//Tampilkan data Siswa ke listview, getallSiswa
public ArrayList> getAllsiswa() {
ArrayList> siswaList;
siswaList = new ArrayList>();
String selectQuery = "SELECT * FROM siswa";
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
HashMap map = new HashMap();
map.put("siswaId", cursor.getString(0));
map.put("namaSiswa", cursor.getString(1));
map.put("jurusan", cursor.getString(2));
map.put("alamat", cursor.getString(3));
siswaList.add(map);
}while (cursor.moveToNext());
}
//return contact
return siswaList;
}
public int editSiswa(HashMap queryValues){
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("namaSiswa", queryValues.get("namaSiswa"));
values.put("jurusan", queryValues.get("jurusan"));
values.put("alamat", queryValues.get("alamat"));
return database.update("siswa", values, "siswaId" + " = ?", new String[]{
queryValues.get("siswaId")});
}
public void hapusSiswa(String id){
Log.d(LOGCAT, "delete");
SQLiteDatabase database = this.getWritableDatabase();
String deleteQuery = "DELETE FROM siswa where siswaId= '"+ id +"'";
Log.d("query", deleteQuery);
database.execSQL(deleteQuery);
}
public HashMap getInfoSiswa(String id){
HashMap siswaList = new HashMap();
SQLiteDatabase database = this.getReadableDatabase();
String selectQuery = "SELECT * FROM siswa where siswaId='"+id+"'";
Cursor cursor = database.rawQuery(selectQuery, null);
if(cursor.moveToFirst()){
do {
siswaList.put("namaSiswa", cursor.getString(1));
siswaList.put("jurusan", cursor.getString(2));
siswaList.put("alamat", cursor.getString(3));
}while(cursor.moveToNext());
}
return siswaList;
}
}
Masih ada dua file XML lagi, edit_datasiswa.xml dan tambah_data_siswa.xml. Dan dua file Class, SiswaBaruActivity dan EditSiswaActivity. Karna terlalu panjang dan hari sudah pagi, eh mw nonton Chelsea vs PSG dulu, silahkan Download lengkap FIle nya aja, Click disini
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
Karna mata ane ndak mau merem dan ternyata udah pagi aje, matahari udah nimbrung aje di barat, mulai perlahan menerangi bumi pertiwi.
Lanjut aje, Catatan ini menampilkan tentang alert dialog gitu yang muncul jika diklik pada menu listview. Disini kita menggunakan dialog singkat dengan fungsi Toast.
Apa itu Toast?
Toast digunakan
untuk menampilkan pesan yang setelah muncul kemudian akan menghilang dengan
sendirinya tanpa interaksi dengan
pengguna. Fokus juga tetap pada aplikasi dan tidak berpindah ke Toast. Kelebihan Toast adalah mudah untuk dibuat,
sedangkan kelemahannya adalah pengguna dapat saja tidak melihat pesan yang ditampilkan
Toast.
Disini kita akan menerapkan Toast pada contoh listview pada catatan sebelumnya,jadi silahkan buka catatan sebelunya disini.
Dan disini kita juga akan menerapkan judul pada baris akan
berubah menjadi warna hitam.
Oke lanjut aja dari pada panjang lebar ngejelasinnya..:) Pada kode listview sebelumnya,
tambahkan kode berikut pada Class MainActivity berikut.
//handle
lv.setClickable(true);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View viewRow, int posisi, long id){
//ambil textView dalam row yang diklik dan ganti warna judul
TextView tvJudul = (TextView) viewRow.findViewById(R.id.tvJudul);
tvJudul.setTextColor(Color.BLACK);
//ambil data pada posisi diklik dan tampilkan datanya
ListData data = alData.get(posisi);
Toast t = Toast.makeText(getBaseContext(), data.judul, Toast.LENGTH_SHORT);
t.show();
}
});
Sehingga kode Lengkapnya di MainActivity sebagai berikut:
package com.compositelistview.yonandroid;
import java.util.ArrayList;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
ArrayList alData = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//isi Data
alData.add(new ListData("Malioboro", "Pusat Belanja Di Jogja ini selalu Ramai, apalagi ketika masa-masa liburan "));
alData.add(new ListData("Parangtritis", "Pantai yang terkenal dengan alam gaibnya, Nyi Roro Kidul, penguasa pantai selatan"));
alData.add(new ListData("Keraton", "Keterangan"));
alData.add(new ListData("Candi Prambanan", "Keterangan"));
//setAdapter
ListView lv =(ListView) findViewById(R.id.listJudul);
DataAdapter adapter = new DataAdapter(this, R.layout.file_row, alData);
lv.setAdapter(adapter);
//handle
lv.setClickable(true);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View viewRow, int posisi, long id){
//ambil textView dalam row yang diklik dan ganti warna judul
TextView tvJudul = (TextView) viewRow.findViewById(R.id.tvJudul);
tvJudul.setTextColor(Color.BLACK);
//ambil data pada posisi diklik dan tampilkan datanya
ListData data = alData.get(posisi);
Toast t = Toast.makeText(getBaseContext(), data.judul, Toast.LENGTH_SHORT);
t.show();
}
});
}
}
Sekarang Jalankan Program dan hasilnya terlihat seperti di Emulator gambar di bawah ini:
Pada Gambar Emulatator diatas terlihat jika diklik Pada Malioboro akan menampilkan dialog Malioboro yang ditunjuk oleh panah merah dibaawah. Dan warna Pada listview Judul Malioboro Berubah jadi warna Hitam.
Ok, Good Morning, Happy Fun coding..
Download Coding Here