2014-10-17 133 views
-3

我想製作一個進度圖,玩家可以看到他的最新5場比賽歷史得分。我在這裏的問題是我想保存在最新的5場比賽的SharedpPeference然後轉移它在加入Array。這將是這樣的:SharedPreference上的陣列(FIFO)

int[] x = { 1,2,3,4,5 }; 
int[] Addition = new int [x.length]; 

是否有可能與SharedPreference?我如何以FIFO的方式做到這一點?因爲我只需要最新的5場比賽的比分?有人能幫助我處理這種邏輯嗎?

回答

0

您不能在SharedPreferences中存儲Arrays

您可以存儲稱爲scores的首字母爲String。然後,在裏面,存儲每場比賽的int

SharedPreferences prefs = getSharedPrefs("score"); 

那麼當您創建Editor保存得分創造每一個

Editor ed = prefs.edit(); 
ed.putInt("1", scoreOneVar); 
ed.commit; 

然後,當有一個第六局比賽中,你將需要刪除的第一個或使用算法來先手最後5.

但是,,存儲/檢索這些數據庫或文件可能會更好/更容易。

See the docs about storage options

+0

有沒有可能在sharedpreference上做到這一點?因爲SQlite更復雜。 – user3698267 2014-10-17 13:33:05

+0

就像我上面展示的那樣。將它們存儲爲單獨的文件。我只添加了第一個分數,但是你可以用「2」分數添加第二個分數,scoreTwoVar「。但是,一旦你嘗試一個SQLite數據庫真的不是那麼複雜。 – codeMagic 2014-10-17 13:35:21

+0

謝謝你的想法,先生。你們真的幫助我。我只需要學習FiFO的算法。 – user3698267 2014-10-17 13:51:01

0

使用此:

int x[] = { 1,2,3,4,5 }; 
String willSave = ""; 
for(int i=0 ; i<x.length ; i++){ 
    willSave += String.valueOf(x[i]) + ";"; 
} 

saveString(getBaseContext(), "Values", "LastScores", willSave); 

// Checking the last cached values  
String cachedValues = loadString(getBaseContext(), "Values", "LastScores"); 
String splitted[] = cachedValues.split(";"); 

int lastValues[] = new int[splitted.length]; 
for(int i=0 ; i<splitted.length ; i++){ 
    lastValues[i] = Integer.parseInt(splitted[i]); 
} 

功能saveStringloadString

public void saveString(Context c, String prefName, String key, String value){ 
    SharedPreferences settings = c.getSharedPreferences(prefName, 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putString(key, value); 
    editor.commit(); 
} 

public String loadString(Context c, String prefName, String key){ 
    SharedPreferences settings = c.getSharedPreferences(prefName, 0); 
    return new String(settings.getString(key, "")); 
} 

此代碼這樣做:int陣列首先轉換爲String,因爲你可以不保存數組t o sharedPrefs。然後再次將此緩存的String轉換爲int數組。

+0

解釋*如何*和*爲什麼*你的代碼應該解決這個問題比打下一層代碼更有利。 – codeMagic 2014-10-17 13:18:42

+0

我以爲只有閱讀代碼才能理解。沒有太多的代碼。無論如何,我加了一點解釋。 – 2014-10-17 13:23:13

+0

這不僅僅是關於OP的理解,還是爲了幫助未來的訪問者解決類似的問題。無論如何,如果有人不知道如何做某件事,然後在這裏問,那麼很有可能解釋代碼的工作方式/原因對每個人都是非常有益的,甚至是你自己。 – codeMagic 2014-10-17 13:26:21