Далее по контекстному меню удаляется один из пунктов списка, из базы он пропадает, все ОК.
Непонятно, как удалить этот пункт из списка теперь так, чтобы он "пропал" с экрана сразу. Вот как я сделал (тут все работает):
Код: Выделить всё
db = SQLiteDatabase.openDatabase(pathToDB, null, SQLiteDatabase.OPEN_READWRITE);
cursor=db.query("mainTable", null, null, null, null, null, null);
startManagingCursor(cursor);
if (cursor.moveToFirst()){
String[] from=new String[]{"Поле","pathToFile"};
int[]to =new int[]{R.id.tvText,R.id.ivImg};
scAdapter=new SimpleCursorAdapter(this,R.layout.item,cursor,from,to);
lvМойСписок.setAdapter(scAdapter);
registerForContextMenu(lvМойСписок);
}else{
//Если строк нет
.........
}
db.close();
Код: Выделить всё
public boolean onContextItemSelected(MenuItem item){
switch (item.getItemId()){
case R.id.delete:
db = SQLiteDatabase.openDatabase(pathToDB, null, SQLiteDatabase.OPEN_READWRITE);
AdapterContextMenuInfo adapterContextMenuInfo=(AdapterContextMenuInfo)item.getMenuInfo();
db.delete("mainTable","_id = "+adapterContextMenuInfo.id,null);
db.close();
Далее извращенный кусок...сильно подозреваю, что можно сделать как-то проще...мой вариант работает как надо, но это изврат ((( Т.е. я еще раз обращаюсь к базе, получаю курсор и строю список, т.е. почти скопированный вышеприведенный код.
db = SQLiteDatabase.openDatabase(pathToDB, null, SQLiteDatabase.OPEN_READWRITE);
cursor=db.query("mainTable", null, null, null, null, null, null);
startManagingCursor(cursor);
if (cursor.moveToFirst()){
String[] from=new String[]{"nameOfPlant","pathToFile"};
int[]to =new int[]{R.id.tvText,R.id.ivImg};
scAdapter=new SimpleCursorAdapter(this,R.layout.item,cursor,from,to);
lvМойСписок.setAdapter(scAdapter);
registerForContextMenu(lvМойСписок);
}else{
//Если строк нет
......... }
db.close();
break;
}
return super.onContextItemSelected(item);
}