Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android--數據存儲之SharedPreferences

Android--數據存儲之SharedPreferences

編輯:Android開發實例

android中apk中的信息保存主要有四種方式,SharedPreferences、File(Properties)、Network、SQLite

SharedPreferences:保存apk中的一些配置信息或者用戶信息,采用鍵值對方式保存,保存的數據類型只能是一些基本數據類型(int、string、boolean..)

今天的demo就是利用SharedPreferences保存歷史用戶的基本信息,在登錄界面內,將歷史用戶信息綁定在AutoCompleteTextView中,實現google搜索條的自動提示功能。

第一步:打開登錄界面,加載所有歷史用戶信息,每一個用戶信息用UserInfo對象保存

 

代碼
public class UserInfo{
private String name="";
private String pwd="";
private boolean isRemember=false;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
。。。。。
}

開始的時候想讓Properties保存List<UserInfo>對象,但是Properties好像也只能保存一些基本數據類型,所以沒辦法退而求其次,將所有的用戶信息保存到String中,格式為:name1/pwd1/isRemember1,name2/pwd2/isRemember2,name3/pwd3/isRemember3。保存方式確定下來後就可以加載資源了

 

代碼
        SharedPreferences settings=this.getPreferences(Activity.MODE_PRIVATE);
String userinfos = settings.getString(PREF_USERINFO, "");//獲得用戶字串
if(userinfos!=""){
usernames=new ArrayList<String>();//AutoCompleteTextView的數據源
List<UserInfo> li=new ArrayList<UserInfo>();//用於保存用戶列表信息

if(userinfos.contains(",")){
String[] users=userinfos.split(",");
for(String str : users){
UserInfo u = new UserInfo();
String[] user=str.split("/");
u.name=user[0];
u.pwd=user[1];
u.isRemember=Boolean.parseBoolean(user[2]);
usernames.add(user[0]);
li.add(u);
}
}else{
UserInfo u = new UserInfo();
String[] user=userinfos.split("/");
u.name=user[0];
u.pwd=user[1];
u.isRemember=Boolean.parseBoolean(user[2]);
usernames.add(user[0]);
li.add(u);
}
return li;
}else{
return null;
}

第二步:配置AutoCompleteTextView數據源,也就是上面得到的List<String> usernames; 

代碼
    @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Log.v(tag, "-----------item selected");
String name=this.actname.getText().toString().trim();
for(UserInfo user : list){//循環用戶信息列表,根據用戶名找到對應的詳細用戶信息
if(user.getName().equals(name)){
String pwd=user.getPwd();
boolean bl=user.isRemember();
etpwd.setText(pwd);
ckremember.setChecked(bl);
return;
}
}
}

第三步:保存用戶信息

先檢查是否存在相同用戶信息,更新用戶列表(list)信息

 

 

 

 

代碼
    //檢查是否包含此用戶名
public void checkUser(){
String uname=actname.getText().toString().trim();
String pwd=etpwd.getText().toString().trim();
boolean bl=ckremember.isChecked();
int position=0;
for(int i=0;i<list.size();i++){
if(list.get(i).getName().equals(uname)){
position=i;
break;
}
}
if(position>=0){//已存在
list.remove(position);
}
UserInfo u=new UserInfo();
u.setName(uname);
u.setPwd(pwd);
u.setRemember(bl);
list.add(u);
}

 

 

 將最終用戶信息一條一條保存

代碼
    //保存用戶信息
private void saveUserInfo(){
checkUser();//檢查是否已存在相同用戶信息
SharedPreferences settings=this.getPreferences(Activity.MODE_PRIVATE);
String userinfos = "";
for(UserInfo user : list){//最終保存的用戶信息都在list中
String uname=user.getName();
String pwd=user.getPwd();
String userinfo=uname+"/"+pwd;
if(user.isRemember()){
userinfo+="/true";
}else{
userinfo+="/false";
}
if(userinfos==""){
userinfos=userinfo;
}else{
userinfos+=","+userinfo;
}
}
Editor editor=settings.edit();//編輯器記錄
editor.putString(PREF_USERINFO, userinfos);
editor.commit();//編輯器提交保存
}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved