巨大的ExpandableListview中的ToggleButton行为不一致

时间:2013-11-29 18:15:22

标签: android togglebutton

我有一个可扩展的列表,每行都有一个可切换的收藏夹按钮。名单很大,有1000多个元素。当其中一个元素切换并且列表开始滚动时,按钮会在看似随机的位置激活和停用。

我怀疑这可能是由于尝试访问我的视图时的内存行为,其中索引与当前的内存列表类似。

元素:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

  <ToggleButton
    android:id="@+id/fav"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textOff=""
    android:textOn=""
    android:background="@drawable/fav_toggle" />

</RelativeLayout>

fav_toggle状态控件就像

一样简单
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@android:drawable/btn_star_big_on" />
    <item android:state_checked="false" android:drawable="@android:drawable/btn_star_big_off" />
</selector>

未在代码中检索或使用该按钮,检查并重复检查。

1 个答案:

答案 0 :(得分:0)

Android操作系统正在重复使用包含该按钮的视图来构建更新的视图。由于在适配器中重建视图时未存储和重新检查按钮状态,因此它将保留上一视图中的按钮状态。如果该视图选中了按钮,它将保持相同的状态。