Android : notifyDataSetOnChange with custom ArrayAdapter and Database

on Wednesday, March 18, 2015


when I delete a note from the list, it is cancelled, but if I write another nota, in the list once again appear the note that previously cancelled


I hope someone know how to tell me what the problem is.


Method in Database for delete the Note



public boolean deleteNote(Nota nota){
boolean resultDelete = false;
SQLiteDatabase dbLite = this.getWritableDatabase();
String whereClause = "_id = ?";
String []whereArg = { nota.getId() + "" };
long a = dbLite.delete("vasca", whereClause, whereArg);
if (a == -1){
resultDelete = false;
}else{
resultDelete = true;
}
dbLite.close();
return resultDelete;
}


MainActivity, where I have the ListView



protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

db = Database.getInstance(this);
list = db.listNote();

// inizializza l'ArrayAdapter
noteAdapter = new NoteAdapter();
// setta l'ArrayAdapter
((ListView) findViewById(R.id.list)).setAdapter(noteAdapter);


Here, in the overriden method getView I try:



imgRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean removeCheck = db.deleteNote(list.get(position));
if (removeCheck){
System.out.println("RIMOSSOOOOOOOOOOOOOOOOOOOOO");
list.remove(getItem(position));

}else{
System.out.println("AAAAAAAAAAAAAAAAAAAAAAAA");
}
noteAdapter.notifyDataSetChanged();
}
});


InnerClass of Adapter class NoteAdapter extends ArrayAdapter {



NoteAdapter() {
super(getApplicationContext(), R.layout.item, list);
}
/*
public void swapItems(ArrayList<Nota> list) {
this.noteItem = list;
noteAdapter.notifyDataSetChanged();
}*/

@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater inflater = getLayoutInflater();
row = inflater.inflate(R.layout.item, null);
}
TextView titoloNota = (TextView) row.findViewById(R.id.row);
TextView bkNota = (TextView) row.findViewById(R.id.row);
ImageButton imgRemove = (ImageButton) row.findViewById(R.id.imgDelete);

{
// Settaggio dei colori background e textcolor nel ListView
if (list.get(position).getColore() == Nota.green) {
bkNota.setBackgroundColor(getResources().getColor(R.color.bk_green));
bkNota.setTextColor(getResources().getColor(R.color.bk_yellow));
} else if (list.get(position).getColore() == Nota.yellow) {
bkNota.setBackgroundColor(getResources().getColor(R.color.bk_yellow));
bkNota.setTextColor(getResources().getColor(R.color.bk_green));
} else {
bkNota.setBackgroundColor(getResources().getColor(R.color.bk_red));
bkNota.setTextColor(getResources().getColor(R.color.bk_green));
}
}

// setta il titolo della nota
titoloNota.setText(list.get(position).getTitolo());

// listener per la rimozione della nota tramite imagebutton
imgRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean removeCheck = db.deleteNote(list.get(position));
if (removeCheck){
System.out.println("RIMOSSOOOOOOOOOOOOOOOOOOOOO");
noteAdapter.remove(getItem(position));

}else{
System.out.println("AAAAAAAAAAAAAAAAAAAAAAAA");
}
noteAdapter.notifyDataSetChanged();
}
});
return row;
}
}

0 comments:

Post a Comment