3

当您在 Eclipse 中使用 ADT,并告诉 ADT 创建一个具有 Master/Detail Flow 的新活动时,此方法将出现在以下片段之一中:

/**
 * Turns on activate-on-click mode. When this mode is on, list items will be
 * given the 'activated' state when touched.
 */
public void setActivateOnItemClick(boolean activateOnItemClick) {
    // When setting CHOICE_MODE_SINGLE, ListView will automatically
    // give items the 'activated' state when touched.
    getListView().setChoiceMode(
            activateOnItemClick ? ListView.CHOICE_MODE_SINGLE : ListView.CHOICE_MODE_NONE);
}

但是,我想实现一个MultiChoiceModeListener. 因此,这需要我消除对这个方法的所有引用,因为它会删除CHOICE_MODE_MULTIPLE_MODAL所需的。但是,我仍然希望单个项目在未激活时从列表中选择其中一个后显示为“已激活” ActionMode,因为我仍在显示该项目的详细信息。(显然,在适当的时候切换)有没有办法做到这一点?

4

1 回答 1

1

但是,当 ActionMode 未激活时,我仍然希望在从列表中选择其中一个项目后,单个项目显示为“已激活”,因为我仍在显示该项目的详细信息。(显然,在适当的时候切换)有没有办法做到这一点?

首先,你想做的事情似乎有点违反直觉。当上下文操作栏未显示时,您将激活一行,但是当 CAB 存在时,您将允许用户选择多行(?!)(当 CAB 存在时,详细信息面板会发生什么,并且用户选择不同的行?!)。当驾驶室被选中多行(激活)时会发生什么?当 CAB 被解散时,详细信息面板会发生什么?

无论如何,做你想做的最简单的方法可能是保留生成的方法(以及选择模式)并丢失MultiChoiceListener. 相反,您将自己ActionMode管理ListView模拟MultiChoiceModeListener. 这ActionMode将从. OnItemLongClickListener_ListView

于 2013-02-23T13:55:11.107 回答