如何设置Spinner Default的值而不是Position?

我在数据库中有1-50条logging。 我使用游标获取这些数据,并使用简单光标适配器将这些值设置为微调。 现在我需要的是我想设置一个值,说第39个值作为默认值。 但不是由于它的地位,我想根据它的价值来设定。

我知道如何设置旋转器默认的位置

spinner.setSelection(39) 

将微调器设置为该值。

但我没有任何想法,在数据库中设置微调器默认的值(文本)。 我知道数据库中的值。 因为例如“书”是微调的价值之一。 我需要将Spinner默认设置为书籍。

有没有办法做到这一点?

如果您正在通过arraylistarray设置微调器值,则可以使用该值的索引来设置微调器的select。

 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); 

看链接如何设置选定项目的微调值,而不是位置?

最后,我用下面的方法解决了这个问题,通过它的string可以得到微调器的位置

 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); 

我希望这对一些人有帮助..

将string与索引值进行比较

 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; } } } 

这是我如何做到的:

 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) { } });