繁体   English   中英

如何从ContextMenu引用选定的ListView项目?

[英]How to reference selected ListView item from ContextMenu?

我在显示帐户列表视图的活动中实现了上下文操作栏(CAB)。 当前,通过CAB的唯一选择是删除帐户。 但是,当用户长按一个帐户并选择删除项时,我不知道如何获得对所选帐户的引用。 这是点击侦听器代码:

mAccountListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                if (mActionMode != null) {
                    return false;
                } else {
                    // Start the CAB using the ActionMode.Callback already defined
                    mActionMode = startSupportActionMode(mActionModeCallback);
                    // Get name to set as title for action bar
                    Account account = (Account) mAccountAdapter.getItem(position);
                    mActionMode.setTitle(account.getName());
                    mAccountListView.setSelection(position);
                    return true;
                }
            }
        });

这是onItemClicked:

// Called when the user selects a contextual menu item
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_delete_account:
            mode.finish(); // Action picked, so close the CAB
            return true;
        default:
            return false;
    }
}

在第二个函数中,在mode.finish()以上,我想从数据库以及适配器中删除帐户。 但是,我不知道如何引用它。 我努力了:

Account acc = (Account) mAccountListView.getSelectedItem();

但我得到该帐户的空值。 我也尝试使用AdapterContextMenuInfo,但在调用item.getInfo()时也得到了一个空对象。 我在其他地方犯了错误吗? 我不想诉诸于存储每次选择一个项目都会改变的静态变量。

您可以在ActionMode上设置标记以传递帐户参考。

以后就用

Account acc = (Account) mode.getTag();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM