如何将Spinner的默认值作为上次保存的值?Android

时间:2017-03-15 07:26:51

标签: android view sharedpreferences android-spinner edit

我有这个在android中添加一个微调器

计划 -

Spinner ctype = (Spinner) findViewById(R.id.s1);
String ct=ctype.getSelectedItem().toString();

所以在Spinner Selection我已经给出了这个数组

XML -

<Spinner
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/s1"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:entries="@array/ct_array"
        android:prompt="@string/ct"
        android:layout_marginTop="2dp"
        android:layout_below="@+id/tt1"/>

线 -

<string-array name="ct_array">
        <item>ftp://</item>
        <item>http://</item>
        <item>https://</item>
        <item>other</item>
    </string-array>

因此,选择它显示 ftp 作为默认值..所以我们可以按照方式更改它们。

所以这里我有一个设置页面我已经给了1 Spinner,3 EditText并且在共享首选项的帮助下我正在保存它们......

我最近为这些共享首页添加了一个编辑页面...

map.get("xyz")的帮助下,我正在阅读以前的SharedValues ..对于编辑文本,我已经给出了这样的

 EditText value1= (EditText) findViewById(R.id.et1);
 value1.setText(map.get("value1"));

所以它显示以前保存的值以同样的方式我想添加为Spinner但它显示总是FTP可以任何人建议我

我试过这个但是它不会起作用

   Spinner conntype = (Spinner) findViewById(R.id.s1);
   conntype.setSelection(map.get("conntype"));
                      // here it should be **(int)** not **(java.lang.stirng)**  

这里我试图将先前选择的值作为第一个,如果之前的值是http://那么显示http://如果他想要更改他可以使用微调器更改但是默认值应该是用户之前选择的一个

请提供此类建议

1 个答案:

答案 0 :(得分:1)

使用以下代码:

 int spinnerPosition = getIndex(conntype, map.get("conntype"));
 conntype.setSelection(spinnerPosition);

这里,getIndex()方法:

  private int getIndex(Spinner spinner, String value){

    for (int i=0;i<spinner.getCount();i++){
       if (spinner.getItemAtPosition(i).equals(value)){
         return i;
       }
    }
    return 0 ;
  }

希望这有帮助。