Android 使用关联菜单从自定义列表视图中删除项目
我有一个使用自定义列表适配器填充的列表视图Android 使用关联菜单从自定义列表视图中删除项目,android,sqlite,listview,contextmenu,Android,Sqlite,Listview,Contextmenu,我有一个使用自定义列表适配器填充的列表视图 private void populateListView(View v) { final DatabaseHandler db = new DatabaseHandler(getActivity()); ArrayList<Data> data = new ArrayList<Data>(); data = db.getData();
private void populateListView(View v) {
final DatabaseHandler db = new DatabaseHandler(getActivity());
ArrayList<Data> data = new ArrayList<Data>();
data = db.getData();
//custome listview populated from sqlite alarms table
final CustomLockListAdapter customlockListAdapter = new CustomLockListAdapter(
getActivity(), data);
lv.setAdapter(customlockListAdapter);
registerForContextMenu(lv);
}
现在我想删除选中的listview项,但我被卡住了,我如何引用正确的行
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle() == "Edit") {
Toast.makeText(getActivity(), "Edit Invoked!", Toast.LENGTH_SHORT).show();
} else if (item.getTitle() == "Delete") {
final DatabaseHandler db = new DatabaseHandler(getActivity());
db.deleteAlarm();
} else if (item.getTitle() == "Resend") {
Toast.makeText(getActivity(), "Resend invoked", Toast.LENGTH_SHORT).show();
} else {
return false;
}
return true;
}
谢谢
现在我想删除选中的listview项,但我被卡住了,
如何引用正确的行
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle() == "Edit") {
Toast.makeText(getActivity(), "Edit Invoked!", Toast.LENGTH_SHORT).show();
} else if (item.getTitle() == "Delete") {
final DatabaseHandler db = new DatabaseHandler(getActivity());
db.deleteAlarm();
} else if (item.getTitle() == "Resend") {
Toast.makeText(getActivity(), "Resend invoked", Toast.LENGTH_SHORT).show();
} else {
return false;
}
return true;
}
您需要使用正确的工具来查找行:
@Override
public void onCreateContextMenu(ContextMenu menu, View arg1, ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
int position = info.position;
获得位置后,您可以通过执行以下操作在菜单充气后再次找到正确的行:
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
int position = info.position;
注意:可扩展列表视图具有contextMenuInfo的不同子类。您必须使用正确的子类,或者使用instanceof进行测试,如果出于某种原因,您可能会收到多种类型的menuInfo
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
int position = info.position;