2017-02-16 16 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

이유 된 SharedPreferences에 데이터를 저장하기 위해 JSON 형식을 시도하지? 그것은 당신의 인생을 더 쉽게 만들 것입니다. –

+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; 
} 

은 Gradle을 파일에 GSON을 추가하는 것을 잊지 마십시오

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

사용 JSON은 전문 안드로이드 개발자에게 인기가있다. 너는 잘 알아야한다.

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

+0

FROMDATE 문자열입니다, 배열로 변경하려면 –

+0

배열로 값을 변경하고 PreferencesFromToDate에 메서드를 작성하여 배열을 반환 할 수 있습니다. 그런 다음 "getTotalValue() [0]"으로 사용할 수 있습니다. –

+0

표시 할 수 있습니까? 예를 들면 –

0

당신은 JSON 문자열로 배열을 저장할 수 있습니다. 필요한 경우 JSON String을 검색하고 배열로 파싱 할 수 있습니다. 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);