2017-12-13 8 views
0

나는 안드로이드 스튜디오를 배우고 있습니다.sharedpreference를 사용하여 listview에 항목을 저장하는 방법

후, 나는 단지 공유 환경 설정을 사용하여

내 목록보기 내 목록 항목을 저장할.

아이템을 추가하고 저장했습니다.

하지만 한 행만 저장할 수 있습니다!

아무 키나 입력합니다. 항목을 추가하기 전에 키를 변경하기 만하면됩니다.

그래서 목록을 추가하고 저장하는 방법은 무엇입니까? ! 나에게

enter code here

// listview save sharedpreference 
private void savePreferences() { 
    String ten = editTen.getText().toString(); 
    String sdt = editSDT.getText().toString(); 
    SharedPreferences pref = getSharedPreferences("pref", Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = pref.edit(); 
    editor.putString("list1", ten); 
    editor.putString("list2", sdt); 
    editor.commit(); 
} 

//로드 sharedpreference

private void getPreferences() { 
     SharedPreferences pref = getSharedPreferences("pref", Context.MODE_PRIVATE); 
     String date = pref.getString("list1", null); 
     String name = pref.getString("list2", null); 
      arrSinhVien = new ArrayList<SinhVien>(); 
      arrSinhVien.add(new SinhVien(R.drawable.luan, date, name)); 
      myadapter = new CustomAdapter(this, R.layout.activity_diary_item, arrSinhVien); 

    } 
+3

된 SharedPreferences 정말 사용하려는 것이다 것이 아닙니다 ..이 당신을 도울 것입니다 이것을 사용 이 목적을 위해. 코드에서 한 쌍의 가치 만 저장하고 있음을 알 수 있습니다. 그래서 그것은 하나의 가치만을 보여줄 것입니다. –

+0

Json을 사용하여 저장하고 검색하십시오. 또는 더 나은 접근 방법으로 Sqlitedatabse를 사용할 수 있습니다. – ADM

+0

sharedpreference의 목적이 아니라는 것을 알고 있습니다. 하지만이 코드를 수정해야한다는 것을 알아야합니다. 절대 절대로 없습니까? –

답변

1

공유 환경 설정 항목의 목록을 저장하는 데 사용되지 않으며, 그것의 단지 키 값 쌍 데이터 구조를 저장하기 위해 소량을 도와주세요 귀하의 응용 프로그램 데이터의.
스 니펫에서 이전 데이터를 새 스 니펫으로 덮어 씁니다.
그러나 여전히 목록 데이터를 저장하려면 JSON 배열을 사용하고 해당 배열을 공유 환경 설정에 배치하는 것이 좋습니다.
코드는 다음과 같습니다.

private void getPreferences() { 
    SharedPreferences pref = getSharedPreferences("pref", Context.MODE_PRIVATE); 
    arrSinhVien = new ArrayList<SinhVien>(); 
    String jsArrList = pref.getString("list", null); 
    JSONArray jsArr=new JSONArray(jsArrList); 
    for(JSONObject obj:jsArr){ 
     String date=obj.getString("ten"); 
     String name=obj.getString("sdt"); 
     arrSinhVien.add(new SinhVien(R.drawable.luan, date, name)); 
    } 
    myadapter = new CustomAdapter(this, R.layout.activity_diary_item, arrSinhVien); 

} 

희망을 다음과 같이

JSONArray jsArr=new JSONArray(); 
 
JSONObject jsObj=new JSONObject(); 
 
jsObj.putString("ten",editTen.getText().toString()); 
 
jsObj.putString("sdt",editSDT.getText().toString()); 
 
//Add this object to your JSONArray 
 
jsArr.add(jsObj); 
 
//Serialize your Json Array and save to shared preferences. 
 
savePreferences(jsArr);

private void savePreferences (JSONArray jsArr) { 
SharedPreferences pref = getSharedPreferences("pref", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = pref.edit(); 
editor.putString("list", jsArr.toString()); 
editor.commit(); 
} 

그리고

+0

고맙습니다.) sharedpreference가 데이터를 저장하는 데 유용하지 않다는 것을 알고 있지만 내 주제가 sharedpreference를 사용하고 있습니다.) 감사합니다. 이게 정말 도움이 돼. –