0

我有一个使用自定义适配器设置的 Listview。ListView 的每一行都有一个按钮和一个用户可以与之交互的搜索栏。我还实现了一个MultiChoiceModeListener来处理长时间单击 ListView 行以允许用户删除多行。

我需要的是在 ListView 处于多选模式时阻止用户与 ListView 的每个行元素(按钮、搜索栏等)进行交互,方法是禁用它们,然后在用户退出多选模式后启用它们。

有没有一种简单的方法可以做到这一点?我试过添加:

    for(int i = 0; i < adapter.getCount(); i++){
        View v = promptListView.getChildAt(i);
        v.setEnabled(false);
    }

到该onCreateActionMode()方法,但没有成功,我仍然能够与行元素进行交互。任何帮助将不胜感激,谢谢。

4

2 回答 2

1

将属性添加android:descendantFocusability="blocksDescendants"到列表行的布局根。这将防止孩子获得焦点,并使用户能够独立单击列表行或其任何子视图。setEnabled()现在,您可以像在代码中一样使用禁用(灰显)和重新启用任何子视图。或者,如果您只想阻止用户与视图交互而不使其变灰,则可以setClickable()改用。

于 2017-01-09T22:22:39.213 回答
0

您可以检查是否希望列表项元素在自定义适配器内进行交互以触摸,因此您可以在此处设置侦听器或禁用它们。

于 2016-07-27T21:32:24.033 回答