2017-08-17 12 views
-2

は、ここで私はこれは私が位置recyclerviewで共有優先してリストをクリアしたい私のコードでシェア優先アンドロイドは - 位置recyclerviewによってsharepreferenceをクリアする方法

private void getAllSharePreference() { 

    SharedPreferences sharedPreferences = getContext().getSharedPreferences(SharePreferenceKey.SONG_LIST, Context.MODE_PRIVATE); 

    getSongJson = sharedPreferences.getString(SharePreferenceKey.SONG_LIST, "N/A"); 

    if (!getSongJson.equals("N/A")) { 
     Type type = new TypeToken<List<SongRespones.Songs>>() {}.getType(); 
     songSharePreference = new Gson().fromJson(getSongJson, type); 

     adapter.addMoreItem(songSharePreference); 
     rvFavorite.setAdapter(adapter); 
    } 
} 

を得た私のコ​​ードです。

@Override 
public void onClickView(final int position, View view) { 

    final PopupMenu popupMenu = new PopupMenu(getContext(), view); 
    popupMenu.inflate(R.menu.remove_favorite); 
    popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 

     @Override 
     public boolean onMenuItemClick(MenuItem item) { 
      switch (item.getItemId()) { 
       case R.id.popup_remove_favorite: 
        songSharePreference.remove(position); 
        adapter.notifyItemChanged(position); 
        break; 
      } 
      return false; 
     } 

    }); 
    popupMenu.show(); 
} 

ただし、共有優先度をクリアすることはできません。 助けてください

+1

からデータを取得し、あなたは共有の好みをクリアしようとしているか、データセットからの位置にある項目を削除しようとしていますか? 質問はクリアされていません – Swati

+0

私は両方をクリアしたいです。 – Vichit

+0

sharepreferenceをクリアした後、私のデータもクリアされました。じゃあ何をすればいいの? – Vichit

答えて

0

SharedPreferencesからすべてのデータを消去したい場合は、これがこの "SharePreferenceKey.SONG_LIST"のすべてのデータを消去する方法です。

@Override 
    public boolean onMenuItemClick(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.popup_remove_favorite: 
       songSharePreference.remove(position); 
       adapter.notifyItemChanged(position); 
       SharedPreferences sharedPreferences = 
       getContext().getSharedPreferences( 
       SharePreferenceKey.SONG_LIST, Context.MODE_PRIVATE); 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       constants.editor.clear(); 
       constants.editor.commit(); 
       break; 
     } 
     return false; 
    } 

私は、ファイルを使用してオブジェクトを保存および取得することをお勧めします。使いやすく扱いやすい。

private void saveDataToFile() { 

    FileOutputStream fileOutputStream = null; 
    try { 
     fileOutputStream = getContext().openFileOutput("fileName", Context.MODE_PRIVATE); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (NullPointerException e) { 

    } 
    ObjectOutputStream objectOutputStream = null; 
    try { 
     objectOutputStream = new ObjectOutputStream(fileOutputStream); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (NullPointerException e) { 

    } 
    try { 
     if (objectOutputStream != null) { 
      objectOutputStream.writeObject(yourObject); //which data u want to save 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     if (objectOutputStream != null) { 
      objectOutputStream.close(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

ファイル

private void getDataFromFile() { 

    FileInputStream fileInputStream = null; 
    try { 
     fileInputStream = getContext().openFileInput("fileName"); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     return; 
    } 
    ObjectInputStream objectInputStream = null; 
    try { 
     objectInputStream = new ObjectInputStream(fileInputStream); 
    } catch (IOException |NullPointerException e) { 
     e.printStackTrace(); 
    } 
    try { 
     yourObject = (ObjectClass) objectInputStream.readObject(); //if arraylist then cast to arrylist ((ArrayList<ObjectClass>) objectInputStream.readObject();) 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
    try { 
     objectInputStream.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 
関連する問題