Ich versuche, ein Listenelement in OnItemClick Methode zu löschen. DB wird für diesen Zweck aufgerufen und der Artikel wird gelöscht. Aber danach wird meine Listenansicht nicht aktualisiert, außer und bis ich diese Aktivität erneut aufgerufen habe. Außerdem funktioniert adapter.notifyDataSetChanged nicht. Hilfe bitte. Ich habe Stunden damit verbracht, verschiedene Lösungen auszuprobieren, aber keine funktioniert. Danke!Adapter.notifyDataSetChanged() nicht die Listenansicht aktualisieren
package com.fyp.digitalsecretary;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import java.util.ArrayList;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
//import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.Toast;
//import android.widget.Button;
//import android.widget.EditText;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
public class UpcomingReminderList extends Main implements OnItemClickListener {
private ListView upcomingReminderListView;
private ArrayList<ReminderItem> tasksArrayList ;
private DynamicListAdapter upcomingReminderListAdapter;
private ReminderItem tempReminder;
public static android.app.ActionBar actionBar ;
private Context c;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView (R.layout.upcomming_tasks);
Main.actionBar.setTitle("Upcoming Tasks");
tasksArrayList = DBHandler.getInstance(this).getBothReminders();
upcomingReminderListAdapter = new DynamicListAdapter(getApplicationContext(),tasksArrayList);
upcomingReminderListView = (ListView) findViewById(R.id.lvTasks);
upcomingReminderListView.setAdapter(upcomingReminderListAdapter);
upcomingReminderListView.setOnItemClickListener(this);
upcomingReminderListAdapter.notifyDataSetChanged();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
tempReminder = tasksArrayList.get(position);
AlertDialog.Builder list = new AlertDialog.Builder(this);
final String[] dept = {"Edit", "Delete"};
list.setItems(dept, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(which == 0){
editReminder();
}
else {
DBHandler.getInstance(c).deleteReminder (tempReminder);
tasksArrayList.clear();
tasksArrayList = DBHandler.getInstance(c).getBothReminders();
upcomingReminderListAdapter.notifyDataSetChanged();
}
}
});
list.setTitle("Please Select");
list.create();
list.show();
}
public void editReminder(){
if (tempReminder.isLoc == 1) {
Intent edit = new Intent(this, LocBasedReminder.class);
edit.putExtra ("editReminder" , tempReminder);
this.startActivity(edit);
}
else {
Intent edit = new Intent(this, TimeBasedReminder.class);
edit.putExtra ("editReminder" , tempReminder);
this.startActivity(edit);
}
}
}
Ändern Sie Ihre 'tasksArrayList = DBHandler.getInstance (c) .getBothReminders();' 'von tasksArrayList.addAll (DBHandler.getInstance (c). getBothReminders()); ' –
verwenden Sie diese Zeile vor dieser Zeile DBHandler.getInstance (c) .deleteReminder (tempReminder); ancientReminderListAdapter.remove (tempReminder); –
Danke eine Tonne @Raphael :) es hat funktioniert :) – Naila