使用浮动上下文菜单从列表视图中删除项目

Mar*_*van 1 android

已经能够使用onItemLongClick方法删除listview项,但我宁愿使用浮动上下文菜单来执行此操作.

下面是我目前用于浮动上下文菜单的代码.我按照文档帮助我进行设置,然后尝试搜索类似的示例,我正在做什么但找不到合适的东西.

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

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
        switch (item.getItemId()) {
            case R.id.edit:

                return true;
            case R.id.delete:

                return true;
            default:
                return super.onContextItemSelected(item);
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我决定切换到浮动上下文菜单之前,这是我必须删除listview中的项目的代码

public boolean onItemLongClick (AdapterView<?> parent, View view, int position, long id)
        {
            String temp = paymentTitle.get(position).toString();
            paymentTitle.remove(position);
            paymentDate.remove(position);
            reminderDate.remove(position);
            reminderTime.remove(position);
            paymentVal.remove(position);

            mDatabase = new MOSDatabase(this);

            SQLiteDatabase readableDB = mDatabase.getWritableDatabase();
            readableDB.delete("PaymentTable", "PTITLE=?",
                    new String[]{temp});

            aa.notifyDataSetChanged();

            return false;
        }
Run Code Online (Sandbox Code Playgroud)

如果有人可以告诉我如何使这个漂浮的上下文菜单工作,我真的很感激.我还没有完成编辑方法,这是我完成后我必须要做的事情.

小智 5

如果我理解正确,您可以使用以下代码获取ListView中单击位置的项目索引:

AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
int position = info.position;
Run Code Online (Sandbox Code Playgroud)

使用position,你可以重用代码onItemLongClick:

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    int position = info.position;
    switch (item.getItemId()) {
        case R.id.edit:

            return true;
        case R.id.delete: {
            String temp = paymentTitle.get(position).toString();
            paymentTitle.remove(position);
            paymentDate.remove(position);
            reminderDate.remove(position);
            reminderTime.remove(position);
            paymentVal.remove(position);

            mDatabase = new MOSDatabase(this);

            SQLiteDatabase readableDB = mDatabase.getWritableDatabase();
            readableDB.delete("PaymentTable", "PTITLE=?",
                    new String[]{temp});

            aa.notifyDataSetChanged();
            }
            return true;
        default:
            return super.onContextItemSelected(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

您可能想看看这个问题的答案.