Halo Sahabat theheran.com dimanapun berada, sesuai dengan janji saya yang akan meneruskan tutorial Spinner SQLite pada artikel Tutorial Menampilkan Data MySQL ke Spinner Android maka edisi kali ini akan saya tepati.
Spinner SQLite tidak jauh berbeda dengan Spinner MySQL karena pada dasarnya keduanya tujuannya adalah menampung semua data dan di tampilkan pada Spinner. Yang membedakan dari kedunya ini adalah sumber datanya.
Kalian bebas memilih salah satu atau keduanya untuk di implementasikan pada aplikasi yang akan dibuat kalian buat dan sesuaikan dengan kebutuhan. Mari kita lanjutkan langsung ketutorialnya di bawah ini.
Implementasi Android
- Buat project android baru dengan nama package “com.theheran.spinnersqlite”. Klik disini untuk lebih detail
- Buat class baru dengan nama ModelSiswa.java –>DOWNLOAD
package com.theheran.spinnersqlite; public class ModelSiswa { /* Author : www.theheran.com | [email protected] PIN BBM: 571078A7 */ private String idSiswa; private String nama; public String getIdSiswa() { return idSiswa; } public void setIdSiswa(String idSiswa) { this.idSiswa = idSiswa; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } }
- Buat class baru dengan nama DatabaseHandler.java –> DOWNLOAD
package com.theheran.spinnersqlite; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseHandler extends SQLiteOpenHelper { /* Author : www.theheran.com | [email protected] PIN BBM: 571078A7 */ // Versi database private static final int DATABASE_VERSION = 1; // Nama Database private static final String DATABASE_NAME = "db_siswa"; // Nama Tabel private static final String TABLE_SISWA = "tb_siswa"; // Colom pada tabel private static final String KEY_ID_SISWA = "id"; private static final String KEY_NAMA = "nama"; public DatabaseHandler(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } // Membuat Tabel @Override public void onCreate(SQLiteDatabase db) { dataAwal(db); } private void dataAwal(SQLiteDatabase db){ String CREATE_ModelSiswaS_TABLE = "CREATE TABLE " + TABLE_SISWA + "(" + KEY_ID_SISWA + " INTEGER PRIMARY KEY," + KEY_NAMA + " TEXT)"; db.execSQL(CREATE_ModelSiswaS_TABLE); String InsertWayan = "INSERT INTO " + TABLE_SISWA +"("+KEY_NAMA+") VALUES ('WAYAN')"; db.execSQL(InsertWayan); String InsertKadek = "INSERT INTO " + TABLE_SISWA +"("+KEY_NAMA+") VALUES ('KADEK')"; db.execSQL(InsertKadek); String InsertKomang = "INSERT INTO " + TABLE_SISWA +"("+KEY_NAMA+") VALUES ('KOMANG')"; db.execSQL(InsertKomang); String InsertKetut= "INSERT INTO " + TABLE_SISWA +"("+KEY_NAMA+") VALUES ('KETUT')"; db.execSQL(InsertKetut); } // Proses Reset data public void prosesResetData() { SQLiteDatabase db = this.getWritableDatabase(); String hapusTabel= "DROP TABLE " + TABLE_SISWA; db.execSQL(hapusTabel); dataAwal(db); } // Upgrading database @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // Drop older table if existed db.execSQL("DROP TABLE IF EXISTS " + TABLE_SISWA); // Create tables again onCreate(db); } // Tambah Data Siswa Baru public void prosesTambahSiswa(ModelSiswa modelSiswa) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAMA, modelSiswa.getNama()); // Input Data db.insert(TABLE_SISWA, null, values); db.close(); // Tutup koneksi database } // Method ambil semua data siswa public List<String> prosesAmbilSemuaDataSiswa(){ List<String> listSiswa = new ArrayList<String>(); String selectQuery = "SELECT * FROM " + TABLE_SISWA; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(selectQuery, null); // Perulangan sejumlah data yang ada dan tambahkan ke list. if (cursor.moveToFirst()) { do { listSiswa.add(cursor.getString(1)); } while (cursor.moveToNext()); } // closing connection cursor.close(); db.close(); // returning lables return listSiswa; } }
- Buka layout/activity_main.xml dan lakukan modifikasi sehingga seperti baris kode dibawah ini. Ohya, ubah text “hello_word” yang ada pada value/string.xml menjadi “Menampilkan Data Dari Database SQLite ke Spinner” atau sesuai dengan kenginan anda.
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">SpinnerSQLite</string> <string name="hello_world">Menampilkan Data Dari Database SQLite ke Spinner</string> <string name="action_settings">Settings</string> </resources>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" tools:context="com.theheran.spinnersqlite.MainActivity" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="@string/hello_world" android:textSize="17dp" android:textStyle="bold" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/spinner1" android:layout_alignRight="@+id/spinner1" android:layout_below="@+id/spinner1" android:layout_marginTop="14dp" android:background="#004182" android:onClick="LoadData" android:text="Reload" android:textColor="#FFFFFF" android:textStyle="bold" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_alignRight="@+id/textView2" android:layout_below="@+id/textView2" android:layout_marginTop="28dp" android:text="Input Nama Siswa" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/txtNama" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView3" android:layout_alignRight="@+id/textView3" android:layout_below="@+id/textView3" android:ems="10" android:hint="Nama Siswa" > <requestFocus /> </EditText> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_alignRight="@+id/txtNama" android:layout_below="@+id/txtNama" android:background="#00893d" android:onClick="TambahData" android:text="Tambah Data" android:textColor="#FFFFFF" android:textStyle="bold" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/txtNama" android:layout_alignRight="@+id/txtNama" android:layout_centerVertical="true" android:text="Spinner Data Siswa" android:textAppearance="?android:attr/textAppearanceMedium" /> <Spinner android:id="@+id/spinner1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button2" android:layout_alignParentBottom="true" android:layout_alignRight="@+id/button2" android:layout_marginBottom="16dp" android:background="@android:color/holo_red_light" android:onClick="Reset" android:text="Reset Ulang" android:textColor="#FFFFFF" android:textStyle="bold" /> </RelativeLayout>
- Buka file MainActivity.java dan ketikkan kode di bawah ini
package com.theheran.spinnersqlite; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; public class MainActivity extends Activity implements OnItemSelectedListener { /* Author : www.theheran.com | [email protected] PIN BBM: 571078A7 */ DatabaseHandler dbcontrol = new DatabaseHandler(this); Spinner spinnerSiswa; EditText txtNama; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinnerSiswa = (Spinner) findViewById(R.id.spinner1); txtNama = (EditText) findViewById(R.id.txtNama); loadSpinner(); } public void LoadData(View v){ loadSpinner(); } public void TambahData(View v){ if(txtNama.getText().toString().isEmpty()){ txtNama.setError("Nama Kosong"); txtNama.requestFocus(); }else{ ModelSiswa mdSiswa = new ModelSiswa(); mdSiswa.setNama(txtNama.getText().toString().toUpperCase()); dbcontrol.prosesTambahSiswa(mdSiswa); Toast.makeText(MainActivity.this, "Data Berhasil Ditambahkan",Toast.LENGTH_LONG).show(); txtNama.setText(""); loadSpinner(); } } public void Reset(View v){ dbcontrol.prosesResetData(); loadSpinner(); Toast.makeText(MainActivity.this, "Data Berhasil Di Reset Ulang",Toast.LENGTH_LONG).show(); } private void loadSpinner() { // database handler DatabaseHandler db = new DatabaseHandler(getApplicationContext()); // Spinner Drop down elements List<String> lables = db.prosesAmbilSemuaDataSiswa(); // Creating adapter for spinner ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, lables); // Drop down layout style - list view with radio button dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // attaching data adapter to spinner spinnerSiswa.setAdapter(dataAdapter); } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // On selecting a spinner item String label = parent.getItemAtPosition(position).toString(); // Showing selected spinner item Toast.makeText(parent.getContext(), "You selected: " + label, Toast.LENGTH_LONG).show(); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } @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 boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
- Selanjutnya jalankan program ke AVD
- Jika tidak ada masalah maka akan tampak seperti gambar dibawah ini
Screenshoot1 | Screenshoot2 |
Screenshoot3 | Screenshoot4 |
DOWNLOAD PROJECT (password protected) | DOWNLOAD APK
nb: Untuk mengetahui password bertanya ke salah satu kontak di bawah ini
- Twitter: Follow & Mention Twitter: @the_heran
- IG: Follow & DM: theheran
- ID LINE : gitraline
- PIN BBM: 571078a7
Jika ada pertanyaan silahkan sampaikan melalui beberapa kontak di bawah ini. Recomended via BBM (Fast Respon).
Semoga bermanfaat!, Salam Hangat
theheran.com