Android 列表视图选择模式

Android 列表视图选择模式,android,Android,当我将此属性设置为我的ListView时,谁能告诉我为什么: mList.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 只要我点击其中一个,列表上的项目似乎就会重新加载?如果我移除了该属性,则不会出现该行为 我在我的活动的OnCreateView方法中设置它,我也可以在xml中设置它,得到相同的结果: <ListView android:id="@+id/lista" android:layout_width="m

当我将此属性设置为我的ListView时,谁能告诉我为什么:

mList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
只要我点击其中一个,列表上的项目似乎就会重新加载?如果我移除了该属性,则不会出现该行为

我在我的活动的OnCreateView方法中设置它,我也可以在xml中设置它,得到相同的结果:

<ListView
        android:id="@+id/lista"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="@string/per_lista"
        android:fadingEdge="none"
        android:divider="#e2e2e2"
        android:dividerHeight="1dp"
        android:choiceMode="singleChoice">


每次选中/取消选中项目时,ListView都会调用requestLayout(),这会导致其子项被重新绘制。不过,这并不意味着这些项目正在重新加载。如果您的项目正在重新加载,那么我们需要更多信息。如果您想查看,可以找到ListView源代码


不幸的是,我不知道,我甚至不确定您是否可以避免重画列表项。这是预期的行为,因为项目正在重新绘制,以便可以根据选择设置或重置其选定状态。您可以始终使用源代码作为您自己的自定义ListView的基础,该ListView在其选择状态更改后不请求布局传递/重画。

您何时调用此函数?您确定项目正在重新加载吗?因为在ListView中,视图在整个时间内都在重新加载,但不完全是项目,所以在此行为中选择Mode no matters。只是我的opinion@vgarzom是的,行正在重新加载,我的ListView中的每一行都有一个ImageView,当我单击任何一行时,所有可见行的ImageView都会在每次选中/取消选中某个项目时重新加载,
ListView
调用
requestLayout()
,这会导致其子项被重新绘制。不过,这并不意味着这些项目正在重新加载。如果您的项目正在重新加载,那么我们需要更多信息。你能为你的适配器和片段/活动提供代码吗?如果您想查看,可以通过此链接@ebarrenchea找到
ListView
源代码。是的,看起来ListView正在重新绘制子项,就好像在适配器上调用了notifyDataSetChanged()。您知道避免重画列表项的方法吗?