我在数据库中有1-50条记录。我使用游标获取这些数据,并使用简单光标适配器将这些值设置为Spinner。现在我需要的是我想设置一个值,将第39个值设置为默认值。但不是我的立场,我想用它的价值来设定。
我知道如何通过位置
设置微调器默认值 spinner.setSelection(39)
将微调器设置为该值。
但我不知道在数据库中通过其值(文本)设置微调器默认值。 我知道数据库中的值。例如,“书籍”是微调器中的一个值。我需要将微调器默认设置为书籍。
有没有办法做到这一点?
答案 0 :(得分:106)
如果您按照arraylist
或array
设置微调器值,则可以使用值的索引设置微调器的选择。
String myString = "some value"; //the value you want the position for
ArrayAdapter myAdap = (ArrayAdapter) mySpinner.getAdapter(); //cast to an ArrayAdapter
int spinnerPosition = myAdap.getPosition(myString);
//set the default according to value
spinner.setSelection(spinnerPosition);
请参阅链接How to set selected item of Spinner by value, not by position?
答案 1 :(得分:14)
最后,我通过使用以下方式解决了问题,其中微调器的位置可以通过其字符串获得
private int getPostiton(String locationid,Cursor cursor)
{
int i;
cursor.moveToFirst();
for(i=0;i< cursor.getCount()-1;i++)
{
String locationVal = cursor.getString(cursor.getColumnIndex(RoadMoveDataBase.LT_LOCATION));
if(locationVal.equals(locationid))
{
position = i+1;
break;
}
else
{
position = 0;
}
cursor.moveToNext();
}
调用方法
Spinner location2 = (Spinner)findViewById(R.id.spinner1);
int location2id = getPostiton(cursor.getString(3),cursor);
location2.setSelection(location2id);
我希望它对某些人有帮助。
答案 2 :(得分:10)
将字符串与索引
中的值进行比较private void selectSpinnerValue(Spinner spinner, String myString)
{
int index = 0;
for(int i = 0; i < spinner.getCount(); i++){
if(spinner.getItemAtPosition(i).toString().equals(myString)){
spinner.setSelection(i);
break;
}
}
}
答案 3 :(得分:1)
这就是我做到的:
String[] listAges = getResources().getStringArray(R.array.ages);
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter =
new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listAges);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner_age.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.spinner_icon), PorterDuff.Mode.SRC_ATOP);
spinner_age.setAdapter(dataAdapter);
spinner_age.setSelection(0);
spinner_age.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getItemAtPosition(position).toString();
if(position > 0){
// get spinner value
Toast.makeText(parent.getContext(), "Age..." + item, Toast.LENGTH_SHORT).show();
}else{
// show toast select gender
Toast.makeText(parent.getContext(), "none" + item, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
答案 4 :(得分:0)
你可以很容易地做到这一点。
String cls=student.getStudentClass();
class_spinner.setSelection(classArray.indexOf(cls),true);
答案 5 :(得分:0)
如果用于微调器的列表是一个对象,则可以找到其位置
(function($) {
$(document).ready(function() {
$( "#save" ).click(function(e) {
if (selectedValIndConstitutionCan === 'waiting'){
$("#form").on('submit', function(e){
e.preventDefault();
});
$('#popupConfirmationEnregistrement').modal("show");
}else{
showProgress();
$("#form").attr(
'action',
CONTEXTE +
'/formsave/save');
$("#form").submit();
}
$("#confirmYesButtonModal").click(function() {
$("#form").attr(
'action',
CONTEXTE +
'/formsave/save');
$("#form").submit();
showProgress();
});
});
selectDeselectRadioButtons();
});
})(jQuery);
使用:
private int selectSpinnerValue( List<Object> ListSpinner,String myString)
{
int index = 0;
for(int i = 0; i < ListSpinner.size(); i++){
if(ListSpinner.get(i).getValueEquals().equals(myString)){
index=i;
break;
}
}
return index;
}