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;