2017-02-16 9 views
0

Перед этим я просто использовал string и integer только для настройки предпочтений. Но теперь я хочу установить массив. Например, я хочу установить значение для индекса 0. setTotalValue [0] = 90; , Затем я могу вернуться с помощью getTotalValue [0], поэтому я получу значение 90. До этого я использовал строку, это было очень просто для меня. Это я показываю свой код, я предпочитаю строку.Array в Object для установки в качестве настроек в 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; 
} 

}

я прав?

Этот класс Preferences

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