Android - удаление элемента из базы данных с контекстным меню - PullRequest
0 голосов
/ 17 августа 2011

Как видно из заголовка, у меня есть список, который при длительном нажатии дает возможность удалить элемент из списка из базы данных. Когда я запускаю код, ничего не происходит, и я получаю предупреждение «окно уже сфокусировано, игнорируя усиление фокуса». вот фрагменты кода -

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
  super.onCreateContextMenu(menu, v, menuInfo);
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.context_menu, menu);
} 


@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
  switch (item.getItemId()) {
  case R.id.remove:
      System.out.println(sindex);

      db.open();
      db.deleteIP(info.position); //deleteIP is the method to delete item from list
      db.close();



      return true;
  default:
    return super.onContextItemSelected(item);
  }
}

deleteIP () -

public boolean deleteIP(long _id)
{
    return db.delete(DATABASE_TABLE, KEY_ID + "=" + _id, null) > 0;
}

db.deleteIP(info.position) создает проблему? Я попробовал еще один вариант. Я сохранил индекс элемента списка в sindex. Так что звонить db.deleteIP(sindex) должно было сработать. Но это не так!

Пожалуйста, помогите! Спасибо.

1 Ответ

0 голосов
/ 17 августа 2011

Вы ссылаетесь на info.position и затем пытаетесь использовать его в качестве первичного ключа, что, вероятно, неверно.Если вы используете CursorAdapter, то info.id будет содержать значение _ID из вашего Cursor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...