2017-02-16 33 views
0

在此之前,我只是使用字符串和整數來設置首選項。但現在,我想設置數組。例如,我希望爲索引0設置值。setTotalValue [0] = 90; 。然後我可以回到使用getTotalValue [0],所以我會得到價值90.在此之前,我使用字符串,這對我來說很簡單。這我顯示我的代碼,我喜歡字符串。對象中的數組設置爲android中的首選項

該類對象

public class ShowDateFromTo { 
private String fromDate; 

public ShowDateFromTo(String fromDate) { 
    this.fromDate = fromDate; 
} 

public String getFromDate() { 
    return fromDate; 
} 

public void setFromDate(String fromDate) { 
    this.fromDate = fromDate; 
} 

} 

我將其更改爲這一個,

public class TotalBadge { 
private ArrayList<Integer> totalValue = new ArrayList<Integer>(); 

public TotalBadge(ArrayList totalValue){ 
    this.totalValue = totalValue; 
} 

public ArrayList<Integer> getTotalValue() { 
    return totalValue; 
} 

public void setTotalValue(ArrayList<Integer> totalValue) { 
    this.totalValue = totalValue; 
} 

}

是嗎?

該類首

public class PreferencesFromToDate { 

SharedPreferences preferences; 
public PreferencesFromToDate(Context context){ 
    preferences = context.getSharedPreferences("pref", Context.MODE_PRIVATE); 
} 

public void setPreferencesFromToDate(ShowDateFromTo profiles){ 
    SharedPreferences.Editor editor = preferences.edit(); 
    editor.putString("FROMDATE",profiles.getFromDate()); 
    editor.apply(); 
} 

public ShowDateFromTo getPreferencesFromToDate(){ 
    String fromDate = preferences.getString("FROMDATE", ""); 
    ShowDateFromTo profiles = new ShowDateFromTo(fromDate); 

    profiles.setFromDate(fromDate); 
    return profiles; 
} 
} 

這個節目我將它

ShowDateFromTo profile = new ShowDateFromTo(newdateFrom); 
profile.setFromDate(newdateFrom); 

如何與陣列替換字符串。我有4個數組索引。平均totalValue [0],totalValue [1],totalValue [2],totalValue [3]

+0

爲什麼不嘗試JSON格式將數據存儲到SharedPreferences?它會讓你的生活更輕鬆。 –

+0

我該如何做Json格式? –

回答

0

您可以使用json格式來存儲您的數據。

public void setPreferencesFromToDate(ShowDateFromTo profiles){ 
SharedPreferences.Editor editor = preferences.edit(); 
editor.putString("FROMDATE", gson.toJson(profiles)); 
editor.apply(); 
} 

public ShowDateFromTo getPreferencesFromToDate(){ 
ShowDateFromTo fromDate = gson.fromJson(preferences.getString("FROMDATE", ""), ShowDateFromTo.class); 
return fromDate; 
} 

不要忘記GSON添加到您的gradle這個文件:

compile 'com.google.code.gson:gson:2.7' 

使用JSON是熱門的專業Android開發者。你應該知道它。

http://androidopentutorials.com/android-sharedpreferences-tutorial-and-example/

+0

FROMDATE是字符串,我想將其更改爲數組 –

+0

您可以將值更改爲數組,並在PreferencesFromToDate中寫入方法以返回數組。然後你可以使用「getTotalValue()[0]」。 –

+0

可以顯示它嗎?例如 –

0

您可以存儲數組作爲JSON字符串。無論何時需要,您都可以檢索JSON字符串並將其解析爲數組。 You can check this link

0

你可以這樣做。使用每個項目的不同鍵名存儲數據。

public class PreferencesData { 

    private static final String PREF_NAME = "pref"; 
    private static final String KEY_DATA = "key_data_"; 

    private SharedPreferences mPreferences; 
    private int mSize; 

    public PreferencesData(Context context, int size) { 
     mSize = size; 
     mPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); 
    } 

    public ArrayList<Integer> getArrayValue() { 
     ArrayList<Integer> result = new ArrayList<>(); 
     for (int i = 0; i < mSize; i++) { 
      result.add(i, getValue(i)); 
     } 
     return result; 
    } 

    public Integer getValue(int index){ 
     return mPreferences.getInt(KEY_DATA + index, 0); 
    } 

    public void setValue(int index, int value) { 
     SharedPreferences.Editor editor = mPreferences.edit(); 
     editor.putInt(KEY_DATA + index, value); 
     editor.apply(); 
    } 
} 

用法:

// Set initial size of 4 
PreferencesData preferences = new PreferencesData(this, 4); 
// set value of 100 to index 0 
preferences.setValue(0, 100); 
// set value of 20 to index 1 
preferences.setValue(1, 20); 
// set value of 40 to index 3 
preferences.setValue(3, 40); 

// Get all data 
ArrayList<Integer> arrayList = preferences.getArrayValue(); 
for (int i = 0; i < arrayList.size(); i++) { 
    ... 
} 

// Get value of index 1 
int value = preferences.getValue(1); 
相關問題