Hai, ini adalah tutorial bagaiamana mengisi data spinner dari database SQLite dan getselecteditem berdasarkan ID item yang dipilih,
biasanya spinner akan memberikan value item berdasarkan posisi item di spinner, tetapi terkadang ada yang mengharuskan developer untuk mendapatkan ID item yang sudah ditentukan didatabase. seperti contoh dibawah ini saya memiliki data perangkat modem berserta ID perangkatnya,
biasanya spinner akan memberikan value item berdasarkan posisi item di spinner, tetapi terkadang ada yang mengharuskan developer untuk mendapatkan ID item yang sudah ditentukan didatabase. seperti contoh dibawah ini saya memiliki data perangkat modem berserta ID perangkatnya,
![]() |
table perangkat |
Contoh table diatas didapatkan dari hasil download melalui server lalu disimpan ke database SQLite secara lokal di device android. Tutorial ini merupakan lanjutan dari project yang sudah dikerjakan sebelumnya, saya hanya mengambil bagian parse data ke Spinner.
let's do this !!
Design layout dengan tampilan seperti contoh layout dibawah ini
Berikut code xml untuk tampilan main yang digunakan pada tutorial ini, silahkan disesuaikan dengan kebutuhan dan kreatifitas masing - masing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:app="http://schemas.android.com/apk/res-auto" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
tools:context=".SpinnerActivity"> | |
<android.support.v7.widget.CardView | |
style="@style/CardView" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
app:cardCornerRadius="0dp" | |
app:cardElevation="5dp"> | |
<LinearLayout | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:layout_margin="10dp" | |
android:orientation="vertical"> | |
<Spinner | |
android:id="@+id/spinner1" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:background="@drawable/style_spinner"> | |
</Spinner> | |
<EditText | |
android:id="@+id/rdt_spinner" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:layout_marginTop="20dp" | |
android:focusable="false" | |
android:hint="Id Perangkat" /> | |
<EditText | |
android:id="@+id/edt_spinner2" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:layout_marginTop="20dp" | |
android:focusable="false" | |
android:hint="Nama Perangkat" /> | |
</LinearLayout> | |
</android.support.v7.widget.CardView> | |
</LinearLayout> |
Selanjutnya, tambahkan method getServiceCursor di kelas Database (kelas ini sudah dibuat sebelumnya)
Tambahkan method untuk mendapatkan seluruh perangkat didatabase berdasarkan ID, method ini memanfaatkan Simple Cursor Adapter yaitu adapter yang mudah digunakan untuk memetakan kolom dari kursor ke TextViews atau ImageViews yang didefiniskan dalam file XML. Anda dapat memenentukan kolom mana yang anda inginkan, tampilan mana yang akan menampilkan kolom database. Untuk lengkapnya kalian bisa membaca dokumentasinya disini SimpleCursorAdapter
Source codenya seperti ini
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public Cursor getServiceCursor() { | |
String selectQuery = "SELECT id_perangkat AS _id, * FROM " + AppConst.TABLE_NAME + " WHERE nama_perangkat LIKE '%modem%' UNION SELECT 0 AS nama_perangkat, null, 'Pilih Perangkat' LIMIT 10"; | |
SQLiteDatabase db = this.getWritableDatabase(); | |
return db.rawQuery(selectQuery, null); | |
} |
Terakhir, buat method onItemSelectedListener Spinner
Gunakan source code ini untuk mendapatkan value berdasarkan ID dan nama perangkat,
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MainActivity extends AppCompatActivity { | |
public Spinner spinner; | |
public EditText edtSp1, edtSp2; | |
String POST_ID_PERANGKAT = "id_perangkat"; | |
String POST_NAMA_PERANGKAT ="nama_perangkat"; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_spinner); | |
getSupportActionBar().setTitle("Spinner"); | |
spinner = findViewById(R.id.spinner1); | |
edtSp1 = findViewById(R.id.rdt_spinner); | |
edtSp2 = findViewById(R.id.edt_spinner2); | |
loadspinner(); | |
} | |
private void loadspinner() { | |
DBPerangkat dbPerangkat = new DBPerangkat(this); | |
final Cursor serviceCursor = dbPerangkat.getServiceCursor(); | |
String[] from = {"nama_perangkat"}; | |
int[] to = {android.R.id.text1}; | |
final SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_dropdown_item, serviceCursor, from, to, 0){ | |
@Override | |
public boolean isEnabled(int position) { | |
return position != 0; | |
} | |
@Override | |
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { | |
View view = super.getDropDownView(position, convertView, parent); | |
TextView tv = (TextView) view; | |
if (position == 0) { | |
tv.setTextColor(Color.GRAY); | |
} else { | |
tv.setTextColor(Color.BLACK); | |
} | |
return view; | |
} | |
}; | |
spinner.setAdapter(adapter); | |
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { | |
@Override | |
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { | |
// get value by ID | |
Object valueID = parent.getSelectedItemId(); | |
edtSp1.setText(String.valueOf(valueID)); | |
//get value by name | |
Cursor qc = adapter.getCursor(); | |
POST_NAMA_PERANGKAT = qc.getString(qc.getColumnIndex("nama_perangkat")); | |
edtSp2.setText(POST_NAMA_PERANGKAT); | |
} | |
@Override | |
public void onNothingSelected(AdapterView<?> adapterView) { | |
} | |
}); | |
} | |
} |
Mengisi data spinner android dari SQLite Database dan mendapatkan ID dari item yang dipilih
Reviewed by nur
on
August 20, 2018
Rating:

No comments: