我有一個列表視圖中成功地被SharedPreferences填充填充。如何刪除列表視圖中的項目(當列表由SharedPreferences
public class FavouritesActivity extends Activity {
ArrayAdapter<String> adapter;
List<String> List;
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_favourites);
lv = (ListView) findViewById(R.id.My_Favourites);
SharedPreferences preferences = this.getSharedPreferences("MyPreferences",
Context.MODE_PRIVATE);
ArrayList<String> List = new ArrayList<String>();
Map<String, ?> prefsMap = preferences.getAll();
for (Map.Entry<String, ?> entry: prefsMap.entrySet()) {
List.add(entry.getValue().toString());
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, List);
lv.setAdapter(arrayAdapter);
這個偉大的工程,但現在我想從列表中刪除項目。
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
removeItemFromList(position);
return true;
}
});
}
protected void removeItemFromList(int position) {
final int deletePosition = position;
AlertDialog.Builder alert = new AlertDialog.Builder(
FavouritesActivity.this);
alert.setTitle("Delete");
alert.setMessage("Are you sure you want delete this item?");
alert.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
List.remove(deletePosition);
adapter.notifyDataSetChanged();
adapter.notifyDataSetInvalidated();
}
});
alert.setNegativeButton("CANCEL",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alert.show();
}
不幸的是這部分不起作用。在AlertView顯示器,但選擇確認崩潰的應用程序。
我有一種感覺它是值得做的一Rray適配器,但我正在努力發現它。
任何人都可以指向正確的方向嗎?
崩潰日誌:
01-10 10:35:45.950: E/AndroidRuntime(1370): FATAL EXCEPTION: main
01-10 10:35:45.950: E/AndroidRuntime(1370): Process: com.LifeSchematics.msg, PID: 1370
01-10 10:35:45.950: E/AndroidRuntime(1370): java.lang.NullPointerException
01-10 10:35:45.950: E/AndroidRuntime(1370): at com.LifeSchematics.msg.FavouritesActivity$2.onClick(FavouritesActivity.java:78)
01-10 10:35:45.950: E/AndroidRuntime(1370): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
01-10 10:35:45.950: E/AndroidRuntime(1370): at android.os.Handler.dispatchMessage(Handler.java:102)
01-10 10:35:45.950: E/AndroidRuntime(1370): at android.os.Looper.loop(Looper.java:136)
01-10 10:35:45.950: E/AndroidRuntime(1370): at android.app.ActivityThread.main(ActivityThread.java:5017)
01-10 10:35:45.950: E/AndroidRuntime(1370): at java.lang.reflect.Method.invokeNative(Native Method)
01-10 10:35:45.950: E/AndroidRuntime(1370): at java.lang.reflect.Method.invoke(Method.java:515)
01-10 10:35:45.950: E/AndroidRuntime(1370): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
01-10 10:35:45.950: E/AndroidRuntime(1370): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
01-10 10:35:45.950: E/AndroidRuntime(1370): at dalvik.system.NativeStart.main(Native Method)
啊,當然。完美,謝謝你的幫助! –
@AndyA很高興幫助朋友。 – Hariharan