안녕하세요. 콘텐츠 공급자를 사용하여 데이터베이스에서 항목을 삭제해야하는 ContextMenu에서 ExpandableListView 항목의 ID를 가져 오는 데 문제가 있습니다.ContextMenu에서 ExpandableListView의 선택한 항목 가져 오기
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menu.add(Menu.NONE, MENU_EDIT, Menu.NONE, "Edit");
menu.add(Menu.NONE, MENU_REMOVE, Menu.NONE, "Remove");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuItem.getMenuInfo();
switch (item.getItemId()) {
case MENU_EDIT:
editEntry(info.id);
return true;
case MENU_REMOVE:
deleteEntry(info.id);
return true;
default:
return super.onContextItemSelected(item);
}
}
private void deleteEntry(long id) {
Uri uri = Uri.parse(DatabaseManager.CONTENT_URI + "/" + id);
getActivity().getContentResolver().delete(uri, null, null);
}
ContextMenu가 표시되지만 '제거'를 클릭해도 아무런 변화가 없습니다. 내가 뭘해야하는지 말해 줄래?
'ListView'또는/및 제공자에서 삭제 된 항목이 보이지 않습니까? 'delete()'를 트리거 할 때 공급자에서 일어나는 일을 추적 해 봤나? 공급자의 삭제 방법을 게시 할 수도 있습니다. – Luksprog
ListView에서 잘 작동했습니다. – keysersoze
아, 어댑터에서 notifydatasetchanged를 호출하는 것을 잊었습니다. 실제로 항목이 삭제되었지만 클릭 한 항목이 아닙니다. 그룹에서 마지막 항목을 삭제하려고하면 그룹에서 첫 번째 항목을 삭제합니다. 왜? – keysersoze