3

谁能告诉我为什么当我将此属性设置为我的 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">
4

1 回答 1

3

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

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

于 2013-03-04T18:25:25.270 回答