2012-05-31 2 views
1

History 항목 (단어)을 SharedPreferences에 저장하고 History는 ListView에서보기에 잘로드됩니다. 나는 다음의 ListView에서 특정 항목을 삭제하려면 다음 코드 줄을 사용ListView 및 SharedPreferences에서 특정 항목을 제거하는 방법?

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
    switch (item.getItemId()) { 
     case R.id.edit: 
      editNote(info.id); 
      return true; 
     case R.id.delete: 
      String content = (String) mLSTHistory.getItemAtPosition(info.position); 
       aptList.remove(content); 
       aptList.notifyDataSetChanged(); 
      deleteNote(info.id); 
      return true; 
     default: 
      return super.onContextItemSelected(item); 
    } 
} 
private void deleteNote(long id) { 
    // TODO Auto-generated method stub 
    if (prefs.getBoolean("saveHistory", true) && mWordHistory != null && mWordHistory.size() >= 1) 

    prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    StringBuilder sbHistory = new StringBuilder(); 
    for (String item : mWordHistory) 
    { 
     sbHistory.append(item); 
     sbHistory.append(","); 

    String strHistory = sbHistory.substring(0, sbHistory.length()-1); 
    SharedPreferences.Editor editor = prefs.edit(); 
    //editor.remove(content); 
    editor.putString("history", strHistory); 
    editor.commit(); 
    } 
} 
private void editNote(long id) { 
    // TODO Auto-generated method stub 

} 

선택한 항목은 definetely ListView에 제거되지만이 저장되어있는 된 SharedPreferences에서 삭제되지 않습니다. 결과적으로, Listview가 다시로드 될 때 항목은 계속 남아 있습니다.

내 질문 : 어떻게 SharePreferences에서 선택한 항목을 제거하도록 코드 할 수 있습니까? 의미 : ListView 및 SharedPreferences에서 선택한 항목을 제거하려면 어떻게해야합니까?

Android의 새로운 기능이므로 내 코드를 기반으로 지침을 제공 할 수 있다면 좋을 것입니다. 고맙습니다.

답변

4

는 공유 prefrences을 취소 내가 제대로 질문을 가지고, 경우

editor.clear(); 
editor.commit(); 

또한 사용합니다. 값이 공유 환경 설정에 저장되어있는 경우,이

SharedPreferences mySharedPrefs = getSharedPreferences("MyPreferences", 0); 
       if(mySharedPrefs.contains("theKey")) { 
SharedPreferences.Editor editor = settings.edit(); 
       editor.remove("thekey"); 
       editor.commit(); 
} 
+0

많은 감사를 시도 할 확인하십시오. 내 문제는 ListView에서 제거 된 항목 인'theKey'를 정의하는 방법입니다. 이 항목은 ListView에 표시된 단어 일 수 있습니다. 그렇다면이 항목의 SharedPreferences를 알리는 방법은 무엇입니까? –

+0

환경 설정 키의 값을 정의하는 것은 간단합니다. 'editor.putString (key, value);'를 사용하여 값에 키를 할당 하시겠습니까? 위의 코드처럼 환경 설정에 환경 설정/값이 실제로 포함되어 있는지 확인하고 있습니다. http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#remove(java.lang.String) 및 http://developer.android.com/reference/android/content/를 읽어보십시오. SharedPreferences.html # contains (java.lang.String)에 대한 자세한 설명이 나와 있습니다. 이것이 도움이 되었다면, 답변을 수락하십시오. 고마워요 – Wesley

+0

아직 내 문제를 해결하지는 못했지만 내 생각에는 자바 문제에 대한 책임이 제한적이라고 생각합니다. 귀하의 지원은 어쨌든 답변입니다. 감사. –

2

당신이

editor.remove("UserName"); 
editor.clear(); 
editor.putString("history",strHistory); 
editor.commit(); 
+0

@Dipak Keshariya : 대단히 감사합니다. 내 문제는''UserName "'을 정의하는 방법이라고 생각합니다. UserName 여기에 ListView에서 제거 된 항목을 의미하지만 제거 된 항목을 목록의 모든 단어가 될 수 있습니다. –

관련 문제