Tutorial Load Data SQLite ke Spinner Android

TheHeran.com/ January 21, 2017/ Spinner, SQLite/ 0 comments

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

  1. Buat project android baru dengan nama package “com.theheran.spinnersqlite”.  Klik disini untuk lebih detail
  2. 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;
    	}
    	
    	
    }
    
    
  3. 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;
    	 }
        
        
    
     
        
    }
    
    
    
  4. 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>
    
  5. 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);
    	}
    }
    
    
    
  6. Selanjutnya jalankan program ke AVD
  7. Jika tidak ada masalah maka akan tampak seperti gambar dibawah ini
Screenshoot1 Screenshoot2
load-data-sqlite-ke-spinner-android_1 load-data-sqlite-ke-spinner-android_1
Screenshoot3 Screenshoot4
load-data-sqlite-ke-spinner-android_1 load-data-sqlite-ke-spinner-android_1

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

Comments

comments