如何设置微调器默认值而不是位置?

时间:2012-05-17 10:40:47

标签: android spinner simplecursoradapter android-spinner

我在数据库中有1-50条记录。我使用游标获取这些数据,并使用简单光标适配器将这些值设置为Spinner。现在我需要的是我想设置一个值,将第39个值设置为默认值。但不是我的立场,我想用它的价值来设定。

我知道如何通过位置

设置微调器默认值
   spinner.setSelection(39) 

将微调器设置为该值。

但我不知道在数据库中通过其值(文本)设置微调器默认值。 我知道数据库中的值。例如,“书籍”是微调器中的一个值。我需要将微调器默认设置为书籍。

有没有办法做到这一点?

6 个答案:

答案 0 :(得分:106)

如果您按照arraylistarray设置微调器值,则可以使用值的索引设置微调器的选择。

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