0

我創建了一個列表,以字符串形式顯示共享首選項。我創建它像這樣...如何通過單擊listView項目來刪除sharedPreference?

adapter = new ArrayAdapter<String>(this, 
android.R.layout.simple_list_item_1, listItems); 
setListAdapter(adapter); 


if (sharedpreferences.contains(Name0)) { 
    String prefs = sharedpreferences.getString(Name0, ""); 
    listItems.add(prefs); 
} 

等與其他偏好。我想弄清楚如何刪除一個列表項,以及共享首選項以及它。我無法弄清楚我是否應該使用onClick監聽器,或者列表中的刪除按鈕,或者我可能還沒有讀過的其他方法。我想讓用戶非常簡單直觀。

所以我的問題是,我如何編輯我現有的代碼來刪除列表項和它顯示的首選項。感謝您的任何幫助。

+0

爲什麼我會得到一個投票?我想知道,所以我可以編輯我的問題或短語它好一點。 – mtorres

+1

如何決定刪除列表視圖項目取決於您:)但是要刪除相應的共享首選項,您可以調用sharedpreferences.edit()。remove(Name0).commit(); –

+0

但是,假設我有一個onClickListener,它會刪除一次選定的列表項,我如何傳遞期望的共享首選項(如name0或name1)來執行上面提供的代碼? @ Losin'Me – mtorres

回答

1

這就是我最終在週末搞清楚的,它需要一個共享首選項,它有兩個逗號分隔的值。防爆。 (Wifiname_SSID,John的Wifi)。然後它分割共享首選項值,並檢查共享首選項值是否與存儲在列表中的字符串匹配。如果共享首選項和被點擊的列表項匹配,則該項目被刪除。

adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, listItems); 
lv = (ListView) findViewById(android.R.id.list); 
lv.setAdapter(adapter); 
lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> a, View v, int position, 
      long id) { 
     AlertDialog.Builder adb = new AlertDialog.Builder(
       NicknamePrefs.this); 
     adb.setTitle("Delete?"); 
     adb.setMessage("Are you sure you want to delete \n" 
       + adapter.getItem(position)); 
     final int positionToRemove = position; 
     adb.setNegativeButton("Cancel", null); 
     adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 

       String item = adapter.getItem(positionToRemove); 
       List<String> items = Arrays.asList(item 
         .split("\\s*,\\s*")); 
       adapter.remove(adapter.getItem(positionToRemove)); 

       String prefs1 = sharedpreferences.getString(Name0, ""); 
       List<String> items1 = Arrays.asList(prefs1 
         .split("\\s*,\\s*")); 


       if (item.contains(items1.get(0)) 
         || item.contains(items1.get(1))) { 
        sharedpreferences.edit().remove(Name0).apply(); 
       } 

       adapter.notifyDataSetChanged(); 
      } 
     }); 
     adb.show(); 
    } 
}); 
相關問題