Saya memiliki tampilan pembaruan, di mana saya harus memilih dulu nilai yang disimpan dalam database untuk Spinner.
Saya sedang memikirkan sesuatu seperti ini, tetapi Adapter
tidak memiliki indexOf
metode, jadi saya terjebak.
void setSpinner(String value)
{
int pos = getSpinnerField().getAdapter().indexOf(value);
getSpinnerField().setSelection(pos);
}
Cara sederhana untuk mengatur pemintal berdasarkan nilai adalah
Cara untuk kode kompleks sudah ada, ini lebih sederhana.
sumber
break;
ketika indeks ditemukan untuk mempercepat proses.0
, Anda harus kembali-1
jika nilainya tidak ditemukan - seperti yang ditunjukkan dalam jawaban saya: stackoverflow.com/a/32377917/1617737 :-)0
sebagai skenario cadangan. Jika Anda mengatur-1
, item apa yang akan terlihat di spinner, saya kira elemen ke 0 dari spinner adapter, menambahkan -1 juga menambahkan kelebihan memeriksa apakah nilainya -1 atau tidak, karena pengaturan -1 akan menyebabkan pengecualian.Saya menyimpan ArrayList terpisah dari semua item di Spinners saya. Dengan cara ini saya bisa melakukan indexOf di ArrayList dan kemudian menggunakan nilai itu untuk mengatur pilihan di Spinner.
sumber
Berdasarkan jawaban Merrill , saya datang dengan solusi garis tunggal ini ... tidak terlalu cantik, tetapi Anda dapat menyalahkan siapa pun yang memelihara kode
Spinner
karena mengabaikan menyertakan fungsi yang melakukan ini untuk itu.Anda akan mendapatkan peringatan tentang bagaimana pemeran ke tanda
ArrayAdapter<String>
tidak dicentang ... sungguh, Anda bisa menggunakanArrayAdapter
seperti yang dilakukan Merrill, tetapi itu hanya bertukar satu peringatan dengan yang lainnya.sumber
jika Anda menggunakan string array ini adalah cara terbaik:
sumber
Anda dapat menggunakan ini juga,
sumber
Jika Anda perlu memiliki metode indexOf pada Adaptor lama (dan Anda tidak tahu implementasi yang mendasarinya) maka Anda dapat menggunakan ini:
sumber
Berdasarkan jawaban Merrill di sini adalah bagaimana melakukan dengan CursorAdapter
sumber
Gunakan baris berikut untuk memilih menggunakan nilai:
sumber
Saya menggunakan adaptor khusus, untuk itu kode ini cukup:
Jadi, cuplikan kode Anda akan seperti ini:
sumber
Ini adalah metode sederhana saya untuk mendapatkan indeks dengan string.
sumber
Anda dapat menggunakan cara ini, cukup buat kode Anda lebih sederhana dan lebih jelas.
Semoga ini bisa membantu.
sumber
ini solusinya
dan getItemIndexById di bawah ini
Semoga bantuan ini!
sumber
Berikut adalah cara melakukannya jika Anda menggunakan
SimpleCursorAdapter
(di manacolumnName
nama kolom db yang Anda gunakan untuk mengisispinner
):Juga (penyempurnaan jawaban Akhil ) ini adalah cara yang sesuai untuk melakukannya jika Anda mengisi Spinner Anda dari sebuah array:
sumber
Jika Anda mengatur array XML ke pemintal dalam tata letak XML Anda bisa melakukan ini
sumber
Sebenarnya ada cara untuk mendapatkan ini menggunakan pencarian indeks pada AdapterArray dan semua ini dapat dilakukan dengan refleksi. Saya bahkan melangkah lebih jauh karena saya memiliki 10 Spinner dan ingin mengaturnya secara dinamis dari basis data saya dan basis data hanya menyimpan nilai bukan teks karena Spinner sebenarnya berubah dari minggu ke minggu sehingga nilainya adalah nomor id saya dari basis data.
Berikut ini adalah pencarian yang diindeks yang dapat Anda gunakan di hampir semua daftar selama bidang berada pada tingkat atas objek.
Metode pemeran yang dapat dibuat untuk semua primitif di sini adalah satu untuk string dan int.
sumber
Untuk membuat aplikasi mengingat nilai pemintal yang terakhir dipilih, Anda dapat menggunakan kode di bawah ini:
Kode di bawah ini membaca nilai pemintal dan mengatur posisi pemintal yang sesuai.
Dan letakkan kode di bawah ini di mana Anda tahu nilai-nilai pemintal terbaru hadir, atau di tempat lain sesuai kebutuhan. Sepotong kode ini pada dasarnya menulis nilai pemintal di SharedPreferences.
sumber
Saya memiliki masalah yang sama ketika mencoba untuk memilih item yang benar dalam pemintal yang diisi menggunakan cursorLoader. Saya mengambil id dari item yang ingin saya pilih pertama dari tabel 1 dan kemudian menggunakan CursorLoader untuk mengisi spinner. Di onLoadFinished saya mengayuh kursor melewati adaptor pemintal hingga saya menemukan item yang cocok dengan id yang sudah saya miliki. Kemudian tetapkan nomor baris kursor ke posisi pemintal yang dipilih. Akan lebih baik jika memiliki fungsi yang sama untuk memberikan id dari nilai yang ingin Anda pilih di spinner ketika mengisi detail pada formulir yang berisi hasil spinner yang disimpan.
sumber
Karena beberapa jawaban sebelumnya sangat benar, saya hanya ingin memastikan tidak ada dari Anda yang jatuh dalam masalah ini.
Jika Anda menetapkan nilai ke
ArrayList
menggunakanString.format
, Anda HARUS mendapatkan posisi nilai menggunakan struktur string yang samaString.format
.Sebuah contoh:
Anda harus mendapatkan posisi nilai yang dibutuhkan seperti ini:
Jika tidak, Anda akan mendapatkan
-1
, item tidak ditemukan!Saya menggunakan
Locale.getDefault()
karena bahasa Arab .Saya harap itu akan membantu Anda.
sumber
Ini adalah solusi mudah-mudahan saya lengkap. Saya telah mengikuti enum:
digunakan di kelas berikut
Kode untuk mengatur pemintal oleh HTTPMethod enum-member:
Di mana
R.id.spinnerHttpmethod
didefinisikan dalam file tata letak, danandroid.R.layout.simple_spinner_item
disampaikan oleh android-studio.sumber
sumber
sangat sederhana gunakan saja
getSelectedItem();
misalnya:
metode di atas mengembalikan nilai string
di atas
R.array.admin_type
adalah file sumber daya string dalam nilaicukup buat file .xml dalam nilai >> string
sumber
Misalkan Anda perlu mengisi spinner dari string-array dari resource, dan Anda ingin tetap memilih nilainya dari server. Jadi, ini adalah salah satu cara untuk menetapkan nilai yang dipilih dari server di spinner.
Semoga ini bisa membantu! PS kodenya ada di Kotlin!
sumber
Karena saya memerlukan sesuatu, yang juga berfungsi dengan Pelokalan , saya menemukan dua metode ini:
Seperti yang Anda lihat, saya juga menemukan kompleksitas tambahan sensitivitas huruf antara arrays.xml dan
value
saya membandingkannya. Jika Anda tidak memiliki ini, metode di atas dapat disederhanakan menjadi seperti:return arrayValues.indexOf(value);
Metode pembantu statis
sumber
Anda harus melewati adaptor khusus Anda dengan posisi seperti REPEAT [posisi]. dan itu berfungsi dengan baik.
sumber