web-dev-qa-db-ja.com

位置ではなく値でスピナーのデフォルトを設定する方法は?

データベースに1〜50個のレコードがあります。カーソルを使用してこれらのデータをフェッチし、Simple Cursor Adapterを使用してそれらの値をSpinnerに設定します。今私が必要なのは、デフォルトとして39番目の値などの1つの値を設定することです。しかし、その位置によってではなく、その値によって設定したいのです。

位置によってスピナーのデフォルトを設定する方法を知っています

   spinner.setSelection(39) 

スピナーをその値に設定します。

しかし、スピナーのデフォルト値をデータベース内のその値(テキスト)で設定することについては考えもしていませんでした。データベースの値を知っています。たとえば、「本」はスピナーの価値の1つです。スピナーのデフォルトをブックとして設定する必要があります。

これを行う方法はありますか?

49
vinothp

最後に、次の方法を使用して問題を解決しました。スピナーの位置はその文字列で取得できます

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

何かに役立つことを願っています。

14
vinothp

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

リンクを参照してください 位置ではなく、値でスピナーの選択されたアイテムを設定する方法?

107

文字列をインデックスの値と比較します

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

これは私がそれをやった方法です:

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

このように簡単にできます。

String cls=student.getStudentClass();
class_spinner.setSelection(classArray.indexOf(cls),true);
0
Rajat Jain