Java 在android中设置为首选项的对象中的数组
在此之前,我只使用字符串和整数来设置首选项。但是现在,我想要集合数组。例如,我希望为索引0设置一个值。setTotalValue[0]=90。然后我可以使用getTotalValue[0]返回,因此我将得到值90。在此之前,我使用字符串,它对我来说非常简单。这是我显示我的代码我优先选择字符串 此类对象Java 在android中设置为首选项的对象中的数组,java,android,arrays,class,preferences,Java,Android,Arrays,Class,Preferences,在此之前,我只使用字符串和整数来设置首选项。但是现在,我想要集合数组。例如,我希望为索引0设置一个值。setTotalValue[0]=90。然后我可以使用getTotalValue[0]返回,因此我将得到值90。在此之前,我使用字符串,它对我来说非常简单。这是我显示我的代码我优先选择字符串 此类对象 public class ShowDateFromTo { private String fromDate; public ShowDateFromTo(String fromDate) {
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;
}
这个节目是我定的
ShowDateFromTo profile = new ShowDateFromTo(newdateFrom);
profile.setFromDate(newdateFrom);
如何用数组替换字符串。我有4个数组索引。平均totalValue[0]、totalValue[1]、totalValue[2]、totalValue[3]您可以使用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开发者来说很流行。你应该很清楚
您可以将数组存储为JSON字符串。只要需要,您就可以检索JSON字符串并解析为数组。
你可以这样做。为每个项存储具有不同键名的数据
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();
}
}
公共类首选项数据{
私有静态最终字符串PREF_NAME=“PREF”;
私有静态最终字符串KEY\u DATA=“KEY\u DATA”;
私人共享参考文献;
私有int-mSize;
公共首选项数据(上下文,整数大小){
mSize=大小;
mPreferences=context.getSharedReferences(PREF_NAME,context.MODE_PRIVATE);
}
公共ArrayList getArrayValue(){
ArrayList结果=新建ArrayList();
对于(int i=0;i
用法:
// 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);
//将初始大小设置为4
首选项数据首选项=新的首选项数据(此,4);
//将值100设置为索引0
参数设置值(01100);
//将值20设置为索引1
参数设置值(1,20);
//将值40设置为索引3
参数设置值(3,40);
//获取所有数据
ArrayList ArrayList=首选项。getArrayValue();
对于(int i=0;i
为什么不尝试使用Json格式将数据存储到SharedReference?这将使您的生活更加轻松。我如何才能使用Json格式?FROMDATE是字符串,我希望将其更改为数组。您可以将值更改为数组,并将方法写入首选项FromToDate以返回数组。然后您可以将其用作“getTotalValue()[0]”。
// 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);