Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中设置为首选项的对象中的数组_Java_Android_Arrays_Class_Preferences - Fatal编程技术网

Java 在android中设置为首选项的对象中的数组

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) {

在此之前,我只使用字符串和整数来设置首选项。但是现在,我想要集合数组。例如,我希望为索引0设置一个值。setTotalValue[0]=90。然后我可以使用getTotalValue[0]返回,因此我将得到值90。在此之前,我使用字符串,它对我来说非常简单。这是我显示我的代码我优先选择字符串

此类对象

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);