1

我在每一行都有一个带有 Toggle Button 的 Listview。在滚动 Listview 时会刷新,因此每次滚动时 Toggle Button 的值也会发生变化?

我想在滚动之前将切换按钮的值保持为用户设置的 ON/OFF 吗?

4

5 回答 5

1
On Scrolling the Listview got refreshed,

这是ListView. 它实际上没有刷新,内存中ListView只有可见的(有一些偏移量)Views。并摧毁他人。

I want to keep that Toggle button value

您需要跟踪切换按钮的状态。就像存储在LocalarrayList 中一样。并更新适配器方法中的togglebutton状态。getView

于 2012-12-05T07:18:06.497 回答
1

在 getView 函数的第一行试试这个

    if (convertView != null) return convertView;
于 2016-06-27T08:21:21.827 回答
0

Use following: This will take care of your listView.

View vi = convertView;

if (convertView == null) {
            vi = inflater.inflate(R.layout.layoutFile, null);
            holder = new ViewHolder();
            holder.layout1 = (LinearLayout) vi
                    .findViewById(R.id.layoutcourse);
            holder.text = (TextView) vi.findViewById(R.id.text);
            holder.status = (ImageView) vi.findViewById(R.id.img_status);
            holder.date = (TextView) vi.findViewById(R.id.date1);
            holder.toggleButton = (ImageView) vi
                    .findViewById(R.id.toggleButton);
            vi.setTag(holder);
        } else

            holder = (ViewHolder) vi.getTag();
于 2012-12-05T07:20:14.077 回答
0

您应该将 ListView 设置为使用setChoiceMode()(with CHOICE_MODE_SINGLEor CHOICE_MODE_MULTIPLE) 并使用实现 Checkable 的自定义行布局,这样 ListView 将记住哪些行已为您切换。

在 ListView 行中的 CheckedTextView 复选标记未显示之前,我详细介绍了如何创建自定义 Checkable 布局。(这并不难,这种方法允许您使用任何内置适配器而无需扩展它。)

于 2012-12-05T07:17:42.610 回答
0

当您切换按钮时,您还应该刷新适配器的数据源。例如,如果您使用arraylist 来填充适配器,则在按钮上切换时,您必须更新您的arraylist。

如果防止行回收,也可以防止刷新列表视图。

于 2012-12-05T07:14:40.057 回答