2017-02-16 57 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);