今天的需求是在選擇城市列表中加入一個最近訪問城市的模塊亿扁,
當(dāng)然,首先想到的就是SharedPreferences來本地緩存數(shù)據(jù)灭翔,然后魏烫,找了一下put方法辣苏,并沒有找到緩存arraylist的方法。這哄褒。稀蟋。。
思考一番:
在緩存本地登錄狀態(tài)的類中寫了兩個方法;
/*
* 在存數(shù)據(jù)和拿數(shù)據(jù)的時候呐赡,我們傳入key值一定要相同退客。
* 緩存數(shù)據(jù)的同時。我們會緩存?zhèn)魅氲膌ist的size链嘀。來遞增key值萌狂。
* 在我們拿數(shù)據(jù)的時候。要先得到之前緩存的數(shù)據(jù)的size(默認(rèn)為0),來遞增key值怀泊,以便取出數(shù)據(jù)茫藏。。** */
public void putList(Context context ,String key,List<String> strList){
if(strList .size() ==0)
return;
//將list的數(shù)量存儲起來
editor.putInt("listsize",strList.size());
editor.commit();
//存儲list中的數(shù)據(jù)
for(int i =0;i<strList.size();i++){
editor.putString(key+i,strList.get(i).toString());
editor.commit();
}}
public List<String> getList(Context context,String key){
List<String> strlist = new ArrayList();
//取出存儲的list數(shù)量
int size = sharedPreferences.getInt("listsize",0);
//根據(jù)list的數(shù)據(jù)取出
for(int i =0 ;i<size;i++){
String s =sharedPreferences.getString(key+i,"");
strlist.add(s);
}
return strlist;}
- 1.每次進(jìn)入選擇城市界面霹琼。先從緩存中拿到數(shù)據(jù)存放到一個list中务傲。
- 然后判斷如果拿到的數(shù)據(jù)時空的話,默認(rèn)add一個數(shù)據(jù)
- 2.在用戶選擇城市的時候枣申。
- 先判斷我們?nèi)〕龅臄?shù)據(jù)中有沒有用戶選擇的數(shù)據(jù)(list.contains()方法)售葡,如果有,不執(zhí)行操作忠藤,否則挟伙,在list中add用戶選擇的城市。
- 我們的最近訪問城市最多為9個模孩,如果我們從緩存中取出的list的size ==9的話尖阔,remove list的第0條,然后在存入用戶選擇的數(shù)據(jù)瓜贾。