2014-06-10 6 views
0

내 목록에서 체크 된 요소를 제거하고 싶지만 기본 앱뿐만 아니라 SharedPreferences도 제거하고 싶습니다. 자, 내 애플 리케이션에서 나는 SharedPreferences에서 chcecked 엘리먼트를 제거 할 수있다. 그래서 만약 내가 나의 액티비티로 되돌아 간다면, 제거 된 모든 엘리먼트는 여전히 보인다. 도와주세요.SharedPreference 목록에서 항목 제거 [android]

SharedPreferences preferences; 
    ArrayList<Object> list = new ArrayList<Object>(); 
    ArrayAdapter<Object> adapter; 
    List<String> localization; 
    Button btnDelete; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_moje_miejsca); 

     btnDelete = (Button) findViewById(R.id.btnDelete); 
     adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_multiple_choice, list); 
     preferences = getSharedPreferences("coordinates", Activity.MODE_PRIVATE); 

     Set<String> localizationSet = preferences.getStringSet("localization_set", new HashSet<String>()); 
     localization = new ArrayList<>(localizationSet); 

     for (String listPosition : localizationSet) { 
      list.add(listPosition); 
      adapter.notifyDataSetChanged(); 
     } 

     setListAdapter(adapter); 


public void onClickBtnDelete(View view){ 

    SharedPreferences.Editor editor = preferences.edit(); 
    SparseBooleanArray checkedItemPositions = getListView().getCheckedItemPositions(); 
    int itemCount = getListView().getCount(); 

    for(int i = itemCount-1; i >= 0; i--){ 

     if(checkedItemPositions.get(i)){ 
      int position = i + 1; 
      adapter.remove(list.get(i));  

     } 
    } 

    editor.remove("localization_set").commit(); 
    itemCount = getListView().getCount(); 

    checkedItemPositions.clear(); 
    adapter.notifyDataSetChanged(); 

    for (int i = itemCount-1; i >= 0; i--){ 

     localization.add((String) list.get(i)); 
     setLocalization = new HashSet<String>(localization); 
     editor.putStringSet("localization_set", setLocalization).commit(); 

    } 

} 

} 

답변

0

을 사용하여 저장된 환경 설정을 모두 제거하려면

SharedPreferences.Editor editor = settings.edit(); 
editor.remove("tag_to_delete"); 
editor.commit(); 

를 사용

내 활동 문제. 내 실수 야. 나는 명단을 분명히 잊어 버렸고 왜 명단 자체가 중복되는지를 잊었다. 이 문제를 해결하기 위해 localization.clear() 메서드를 추가하는 것으로 충분합니다.

6

특정 저장 현을 제거하려면 다음 다음 내가 찾은이

SharedPreferences.Editor editor = settings.edit(); 
editor.clear(); 
editor.commit(); 
+0

그러나 목록에서 일부 요소 만 제거하고 editor.remove()는 전체 목록을 제거하고 싶습니다. 예를 들어, 내 환경 설정에 MyList가 있고 그것은 다음과 같습니다. 1. cat, 2. dog, 3.lion, 4 crown. 사자와 개만 내 목록에서 제거하고 싶습니다. –

+0

먼저 list.remove (position)를 사용하여 목록에서 항목을 제거하고 다시 저장하십시오. – MrEngineer13

+0

가능한 경우 내 편집 게시물을보십시오 (onClickDeleteBtn 메소드로). 이제는 선택한 항목을 작업에서 제거하고 SharedPreferences에서 전체 목록을 제거한 다음 제거 된 요소없이 새 목록을 저장했습니다. 하지만 여전히 onCreate 메서드를 실행하면 SharedPreferences에서 이전 목록을 가져옵니다. –