簡體   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