Android Spinner + SharedPreferences 保存上一次选择的值

android下拉可选菜单Spinner创建:
1, 创建一个HelloSpinner的android project
2, 修改main.xml文件:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:padding="10dip"     android:layout_width="fill_parent"     android:layout_height="wrap_content">     <TextView         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:layout_marginTop="10dip"         android:text="@string/planet_prompt"     />     <Spinner          android:id="@+id/spinner"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:prompt="@string/planet_prompt"     /> </LinearLayout>    3, 修改strings.xml文件,添加: <?xml version="1.0" encoding="utf-8"?> <resources>     <string name="planet_prompt">Choose a planet</string>     <string-array name="planets_array">         <item>Mercury</item>         <item>Venus</item>         <item>Earth</item>         <item>Mars</item>         <item>Jupiter</item>         <item>Saturn</item>         <item>Uranus</item>         <item>Neptune</item>     </string-array> </resources>  4, 修改HelloSpinner.java文件中的OnCreate方法 @Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);       Spinner spinner = (Spinner) findViewById(R.id.spinner);     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(             this, R.array.planets_array, android.R.layout.simple_spinner_item);     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);     spinner.setAdapter(adapter); }    5, 创建一个内部类:  public class MyOnItemSelectedListener implements OnItemSelectedListener {       public void onItemSelected(AdapterView<?> parent,         View view, int pos, long id) {       Toast.makeText(parent.getContext(), "The planet is " +           parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();     }       public void onNothingSelected(AdapterView parent) {       // Do nothing.     } }    6,设置监听器:     spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());   7, 运行结果如下:  


8, 如果用户选择了spinner其中的某一个item, 跳入到另外一个activity中,当从这么activity跳回来的时候,如何让spinner记得用户之前选择的那个一个item呢?这里用到了SharedPreferences:
8.1 声明一个SharedPreferences: SharedPreferences settings;
Editor editorsettings;
settings = getSharedPreferences("preferences_settings",Context.MODE_PRIVATE);
editorsettings = settings.edit(); 其中“preferences_settings”就是这个SharedPreferences的标志,我觉得就像是唯一的名字一样。
8.2在spinner的setOnItemSelectedListener方法里保存当时用户选择的item的位置和值 spinner.setOnItemSelectedListener(new OnItemSelectedListener(){
                @Override
                public void onItemSelected(AdapterView<?> parent, View arg1,
                    int postion, long id) {
                    selectedName = parent.getItemAtPosition(postion).toString();

editorsettings.putInt("SelectedPosition", postion);
                    editorsettings.putString("SelectedName", selectedName);
                    editorsettings.commit();
8.3 读取存在SharedPreferences里的值 SharedPreferences settings = getSharedPreferences("preferences_settings",0); //与上面的保持一致
String name = settings.getString("SelectedName", ""); 
int position = settings.getInt("SelectedPosition", 0 );

spinner.setSelection(position); //设置spinner的值,让其当前选择项是与以前的一样。

时间: 2024-12-18 06:06:31

Android Spinner + SharedPreferences 保存上一次选择的值的相关文章

Android使用SharedPreferences保存对象

核心原理: 对象序列化 步骤 1.要保存的对象实现序列化Serializable 2.将序列化的对象保存String(本文的做法是保存为byte数组在转为16进制的String类型保存起来) 3.将保存的String反序列化为对象 下面是完整代码 步骤1.要保存的对象实现序列化Serializable public class Sertest implements Serializable{ private String name; private int age; } 步骤2.将序列化的对象保

Android使用SharedPreferences保存账号密码

有很多的应用都会有保存密码和账号的功能,比如QQ.接下来就讲讲使用SharedPreferences来保存密码和账号,也许有些人会考虑的数据库,但是我个人认为对于保存简单的数据,使用的数据库就大材小用了,SharedPreferences比较轻量级 首先写好布局,只有两个输入框和一个按钮 <EditText android:id="@+id/number" android:layout_width="match_parent" android:layout_h

Android 利用SharedPreferences保存与删除 用户登录数据

创建SharedPreferences对象: SharedPreferences sharedPreferences = context.getSharedPreferences("userInfo", MODE_PRIVATE); Editor editor = sharedPreferences.edit(); editor.putString("username", “用户名”); editor.putString("userid", &q

android 使用SharedPreferences保存list数据

List<Map<String, String>> list = new ArrayList<Map<String, String>>(); List<Map<String, String>> test = getInfo(this, "name"); for (int i = 0; i < test.size(); i++) { Map<String, String> itemMap = tes

Android简易实战教程--第十六话《SharedPreferences保存用户名和密码》

之前在Android简易实战教程--第七话<在内存中存储用户名和密码> 那里是把用户名和密码保存到了内存中,这一篇把用户名和密码保存至SharedPreferences文件.为了引起误导,声明实际开发中不会用到这两种方式,这里指示提供一种思路和给初学者学习简单的api. 由于内容和之前的基本一样,不做过多的解释.直接上代码: xml文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi

(十)android 中数据存储与访问——使用SharedPreferences保存数据

10.1 SharedPreferences概述 数据存储方式有五种,前面介绍的是通过IO流以文件的方式存储数据,这里学习的SharedPreferences方式保存的数据,主要保存的是用户的偏好设置. 很多时候,我们开发的程序是需要向用户提供软件参数设置功能的.用户根据自己的兴趣爱好对软件的各项参数进行配置,以符合自己的使用习惯. 例如,我们使用eclipse的时候,可以设置字体的显示颜色.大小等.Eclipse内部使用的是xml格式的文件来保存软件的配置参数. 如果我们要在安卓中保存用户在软

Android中SharedPreferences和序列化结合保存对象数据

前言: 最近在做用户注册的时候,遇到了需要填写很多表单数据,不可能在一页把所有的数据都展示完全,因此采用了分页的方式,由于在用户填写数据数据之后我们需要对用户填写的数据进行暂时的记录的,当用户会到此页时,还能查看和修改.刚开始解决这个问题我们一定会从数据的大小的角度来解决,于是就有以下几种方式: A.运用临时静态变量static来保存到内存中                               B.运用SharedPreferences来保存                       

Android记录4--自定义ToggleButton+用SharedPreferences保存用户配置

很多应用都会有用户设置,用户的一些偏好可以由用户来决定那是应用人性化的体现,在实际开发中很多情况都作成可配置的了,本篇博客要介绍的是一个比较炫的状态按钮切换,我想很多开发者都想做出这样的效果,在这里我也就把自己参与的项目当中的这部分实现,做出Demo来于朋友们分享. 没有图,我感觉就特别不舒服: 这样看没办法看出效果,如果能做出动态图就好了,下次吧. 除了ToggleButton的自定义之外,用户配置的信息也是要保存起来的,每一次启动程序的时候要能保证使用的是之前的配置,而不是默认配置,在这里使

Android中利用SharedPreferences保存信息

package com.example.sharepreferen; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.vi