2017-06-24 14 views
-2

sharedpreferencesに保存したリストがありますユーザーが長いクリックで長時間クリックしたときにリストビューからアイテムを削除したい場合は、削除するかどうかを確認するプロンプトが表示されますそれを削除します。これは動作しますが、アクティビティに戻ると、リストには削除されたアイテムがまだ残っています これはonCreateViewのコードです。 tinyDBはsharedprefrences.Thankあなたsharedpreferencesからアイテムを削除しない

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_tab_secondsemester, container, false); 
    btnAddNew = (Button)rootView.findViewById(R.id.btnAddNewYearOneSecondSemester); 
    listView = (ListView)rootView.findViewById(R.id.listViewSubjectsMyCoursesSecondSemester); 
    tinyDB = new TinyDB(getContext()); 
    storedList = new ArrayList<>(tinyDB.getListString("storedList")); 
    generalList = new ArrayList<>(); 
    spinnerValues = new ArrayList<>(); 




    getActivity().setTitle("Year One"); 

    setHasOptionsMenu(true); 

    btnAddNew.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext(),R.style.DialogeTheme); 
      // Setting Dialog Title 
      alertDialog.setTitle("Add new"); 

      // Setting Dialog Message 
      String getUsername = tinyDB.getString("Username"); 
      alertDialog.setMessage("Hello "+ getUsername + ", please write the new subject"); 
      final EditText input = new EditText(getContext()); 
      LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.MATCH_PARENT); 
      input.setLayoutParams(lp); 
      input.setTextColor(Color.parseColor("#f06292")); 
      alertDialog.setView(input); 
      alertDialog.setPositiveButton("Add", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 
        String getSubjectInput = input.getText().toString(); 
        storedList.add(getSubjectInput); 
        tinyDB.putListString("storedList", storedList); 
        arrayAdapter.notifyDataSetChanged(); 


       } 
      }); 

      alertDialog.setNegativeButton("CANCEL", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          // Write your code here to execute after dialog 
          dialog.cancel(); 
         } 
        }); 
      // Showing Alert Message 
      alertDialog.create(); 
      alertDialog.show(); 

     } 
    }); 

    listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(final AdapterView<?> adapterView, View view, final int i, long l) { 
      new SweetAlertDialog(getContext(), SweetAlertDialog.WARNING_TYPE) 
        .setTitleText("Delete") 
        .setContentText("Are you sure you want to delete this course") 
        .setConfirmText("YES") 
        .setCancelText("NO") 
        .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { 
         @Override 
         public void onClick(SweetAlertDialog sweetAlertDialog) { 
          storedList.remove(i); 
          arrayAdapter.notifyDataSetChanged(); 
          tinyDB.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener() { 
           @Override 
           public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { 
            arrayAdapter.notifyDataSetChanged(); 
           } 
          }); 
          sweetAlertDialog.dismiss(); 

         } 
        }) 
        .setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() { 
         @Override 
         public void onClick(SweetAlertDialog sweetAlertDialog) { 
          sweetAlertDialog.dismiss(); 
         } 
        }) 
        .show(); 
      return true; 
     } 
    }); 


    arrayAdapter = new CustomListAdapter(getContext(),storedList); 
    listView.setAdapter(arrayAdapter); 
    arrayAdapter.notifyDataSetChanged(); 




    return rootView; 
} 

答えて

0

使用このユーザーはそれを削除するとき

public void removeAt(int position) { 
    mDataset.remove(position); 
    notifyItemRemoved(position); 
    notifyItemRangeChanged(position, mDataSet.size()); 
} 

mDatasetあなたは、アダプタ

+0

のすべてのデータを保存した配列/リストは何かということですしてくださいですnotifyItemRemoved(位置);およびnotifyItemRangeChanged(位置、mDataSet.size()); –

+0

@EmmanuelOkocha ** DOCS **、[ここ](https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#notifyItemRangeChanged(int、%20int ))と[ここ](https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#notifyItemRemoved(int)) – QBrute

関連する問題