現状
選択された項目数でmapが順に削除されてしまう。
そうではなく、選択された項目の場所に対応させてmapを削除したい。
titleList等とmap等は要素・要素数も同じようになっており、mapは値からキー名を取得し、SharedPreferenceの保存データから削除するために使っている。
checked.keyAt(i)は書けないっぽい
MainActivity
1public boolean onOptionsItemSelected(MenuItem menuItem) { 2 //押されたメニューのIDで処理を振り分ける 3 //if(menuItem.getItemId() == R.id.menuClear){ 4 switch (menuItem.getItemId()) { 5 case R.id.menuSelect: 6 //マップの情報を取得する 7 SparseBooleanArray checked = listView.getCheckedItemPositions(); 8 9 for (int i = 0; i <= checked.size(); i++) { 10 if (checked.valueAt(i)) { 11 for (Map.Entry<String, String> entry : MakeQuizActivity.mapTitle.entrySet()) { 12 if (entry.getValue().equals(titleList.get(checked.keyAt(i)))) { 13 Log.v("Debug", "キーを取得" + entry.getKey()); 14 adapter.remove(titleList.get(checked.keyAt(i))); 15 PreferenceManager.remove(entry.getKey()); 16 } 17 } 18 adapter.notifyDataSetChanged(); 19 } 20 for (Map.Entry<String, String> entry : MakeQuizActivity.mapQuiz.entrySet()) { 21 if (entry.getValue().equals(quizList.get(checked.keyAt(i)))) { 22 Log.v("Debug", "キーを取得" + entry.getKey()); 23 PreferenceManager.remove(entry.getKey()); 24 } 25 } 26 for (Map.Entry<String, String> entry : MakeQuizActivity.mapAnswer.entrySet()) { 27 if (entry.getValue().equals(answerList.get(checked.keyAt(i)))) { 28 Log.v("Debug", "キーを取得" + entry.getKey()); 29 PreferenceManager.remove(entry.getKey()); 30 } 31 } 32 } 33 break;
コード
MakeQuizActivity
1public class MakeQuizActivity extends AppCompatActivity { 2 public static Map<String,String> mapTitle = new HashMap<>(); 3 public static Map<String,String> mapQuiz = new HashMap<>(); 4 public static Map<String,String> mapAnswer = new HashMap<>(); 5 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_make_quiz); 10 setTitle("クイズ作成"); 11 12 Button button2 = (Button)findViewById(R.id.makeQuiz_Button2); 13 button2.setOnClickListener(new View.OnClickListener() { 14 @Override 15 public void onClick(View v) { 16 Intent intent = new Intent(MakeQuizActivity.this,com.test.quizmaker.MainActivity.class); 17 String strTitle = ((EditText)findViewById(R.id.editText)).getText().toString(); 18 String strQuiz = ((EditText)findViewById(R.id.editText2)).getText().toString(); 19 String strAnswer = ((EditText)findViewById(R.id.editText3)).getText().toString(); 20 PreferenceManager.saveInt(MainActivity.count); 21 PreferenceManager.saveString(strTitle, DataKeys.TITLE, String.valueOf(MainActivity.count)); 22 //MainActivity.titleList.add(strTitle); 23 mapTitle.put(DataKeys.TITLE.getValue() + String.valueOf(MainActivity.count),strTitle); 24 PreferenceManager.saveString(strQuiz, DataKeys.QUIZ, String.valueOf(MainActivity.count)); 25 //MainActivity.quizList.add(strQuiz); 26 mapQuiz.put(DataKeys.QUIZ.getValue() + String.valueOf(MainActivity.count),strQuiz); 27 PreferenceManager.saveString(strAnswer, DataKeys.ANSWER, String.valueOf(MainActivity.count)); 28 //MainActivity.answerList.add(strAnswer); 29 mapAnswer.put(DataKeys.ANSWER.getValue() + String.valueOf(MainActivity.count),strAnswer); 30 setResult(RESULT_OK, intent); 31 finish(); 32 } 33 }); 34 } 35} 36
あなたの回答
tips
プレビュー