当ListView.setChoiceMode设置为CHOICE_MODE_MULTIPLE_MODAL时,会显示单个项目

时间:2013-02-23 00:39:40

标签: android listview android-listview

当您在Eclipse中使用ADT并告诉ADT使用主/明细流创建新活动时,此方法将出现在其中一个片段中:

/**
 * 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未激活时,我仍然希望从列表中选择其中一个项目时,单个项目显示为“已激活”,因为我仍然显示该项目的详细信息。 (显然,在适当时切换)有没有办法去做呢?

1 个答案:

答案 0 :(得分:1)

  

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

首先,你想做什么似乎有点反直觉。当没有显示上下文操作栏时,您将激活一行,但是当CAB存在时,您将允许用户选择多行(?!)(当CAB存在时,详细信息面板会发生什么情况,用户选择各行?!)。当CAB被选中(激活)多行时被解雇会发生什么?当CAB被解雇时,细节面板会发生什么?

无论如何,做你想做的最简单的方法可能是保留生成的方法(以及选择模式)并丢失MultiChoiceListener。相反,您将为模拟ActionMode的{​​{1}}管理自己的ListView。该MultiChoiceModeListener将从ActionMode上的OnItemLongClickListener触发。