0

我有一个 ListView 的自定义适配器。在上getView(),我将 onTouchListener 附加到 convertView。

触摸 item/convertView 后,我将 ViewHolder 的 RelativeLayout 的 LayoutParams 更新为向左移动,并将显示在最上面的布局下方的几个按钮设置为可点击,如一些可滑动的 ListView 指南中所述。

不幸的是,当我向下滚动 ListView 时,其他项目现在也将布局滑到一边,下面设置了可点击的按钮。我不确定为什么对单个 ViewHolder 的更改会被回收给其他人,但我确信我只是陷入了一个简单的误解。任何人都可以提供解释和解决方案吗?谢谢!

4

2 回答 2

0

回收视图后,您应该将视图重置为其初始状态并使用新值填充它。

于 2015-06-12T19:33:22.553 回答
0

您可以为此使用一个简单的布尔数组。例如,

List 有 5 个项目,因此最初的数组将是-

arr[false,false,false,false,false]

当您选择任何项目时,更新该项目位置的数组值 -

列表项 1 已选择 -arr [true,false,false,false,false]

列表项 3 已选择 -arr [true,false,true,false,false]

列表项 5 已选择 -arr [true,false,true,false,true]

并在 getView 的方法中检查数组的值-

if(arr[position] == false)
{
   // item not selected so do changes you want in non-selected items 
}
else
{
   // item selected so do changes you want in selected items 
}
于 2015-06-12T19:57:54.897 回答