当前位置: 首页 > 知识库问答 >
问题:

listview行布局的动态更改也会影响其他行

颜哲彦
2023-03-14

我使用的是ListView,每个列表元素上都有几个按钮。

单击行上的按钮时,该按钮应消失。单击按钮时,单击的按钮会消失,这没关系。问题是其他一些列表元素按钮也不见了。

例如,当我点击第一元素按钮时,它也会影响第六、第十一、第十六元素中的按钮。

原因是适配器没有为数据中的所有元素创建列表元素。它只创建了几个足以在屏幕上显示的对象。如图所示,在列表中向下移动时,top元素成为最后一个元素,其值也发生了变化。因此,当我在第一个元素中隐藏按钮时,第八个元素中的按钮(数字来自图片)也被隐藏。

我可以避免使用已创建项的副本,并为每个元素创建新项,这可能是一个解决方案,但在查看了这么多行之后,它会减慢应用程序的速度。

我已经找了好几个小时了,但找不到任何解决办法。我希望有人知道任何解决方案,或者至少向我推荐一种不同的适配器、实现或其他东西。

共有2个答案

万浩淼
2023-03-14

当适配器收到getview调用时,完全重新初始化重用的视图。

至于你的速度问题。听起来像是希望适配器延迟加载数据。你加载数据的速度很慢。必须要有所付出。这个问题的一个常见解决方案是在后台线程中加载数据。

羊舌墨一
2023-03-14

你应该跟踪每个元素按钮的状态天气显示或隐藏。在适配器的方法getView()中检查当前元素状态,然后相应地隐藏或显示按钮。当使用这种方法时,确保设置每个按钮的状态,而不仅仅是应该隐藏的状态,这样当视图循环时,视图会得到新的项目状态,而不是旧的状态。

 类似资料:
  • 这就是我生成dutylist的方法。 这将更改对的第二个值 但是它会更改pos中的其他值,也就是说,如果我更改了StaffListUpdated[0].third[0]=pair,它也会更改StaffListUpdated[1].third[0]=pair。我试过很多种方法,但都无济于事。

  • 比如说,一个 mysql sevrer 有 100 个连接 这一百个连接什么 level 都有 假如现在执行一个 level 为 SERIALIZABLE 的 crud sql 什么,此时 mysql server 会停掉其他 99 个连接的 sql 来实现 SERIALIZABLE 吗? 这个问题的意思就是,SERIALIZABLE level 只会让其他 SERIALIZABLE level,

  • 问题内容: 除了参考JSFiddle上的以下示例外,我无法解释这一点-在该示例中,引入BLUE:hidden属性后,最后一个BLUE框未按预期扩展到宽度的100%。 我的印象是溢出:隐藏只会影响可见性,而不会干扰布局。有人可以解释此示例中的情况吗? 编辑: 此问题似乎仅限于webkit浏览器(例如Chrome) 问题答案: 这是因为,除其他属性外,还引入了新的_块格式化上下文_ 。 您可以在这篇出

  • 我错过了什么? 为了便于阅读,这里提供了一个要点,并附带了一个测试用例:https://Gist.github.com/teyc/5668517

  • 问题内容: 我遇到了一个问题,我的css3转换会影响页面上的其他元素,甚至导致它们闪烁。我看到了另一篇关于此的文章,但是他们没有解决该问题的方法。 当您滚动导航时,您会看到动画的css3转换。在Firefox中它可以正常工作而不会闪烁,但是对于chrome和safari,效果非常明显,您可以在下拉菜单项和页脚文本中看到它。 问题答案: 这是Chrome22(显然是Safari)上Macintosh

  • 问题内容: 我有一个具有 自动高度的UITableView自定义UITableViewCell设计 。 该行为是在my的第一次加载中UIViewController,UITableView显示带有部分文本的标签。然后,当我滚动 到底部然后滚动到顶部时,得到了所需的高度和文本外观。 这是先滚动后再滚动的外观(这是 我的实现的正确外观,但我删除了一些Lorem文本): 编辑1: Code: 在UI B