2

我正在使用 ListView,每个列表元素上有几个按钮。

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

例如,当我单击第一个元素按钮时,它也会影响第 6、11、16 个元素中的按钮。第 7 个元素按钮也会影响第 2、第 12、第 17 个元素。

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

在此处输入图像描述

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

我一直在寻找几个小时,但找不到任何解决方案。我希望有人知道任何解决方案,或者至少向我建议一种不同类型的适配器、实现或其他东西。

4

2 回答 2

1

您应该跟踪显示或隐藏天气的每个元素按钮状态。在getView()适配器的方法中检查当前元素状态,然后相应地隐藏或显示按钮。使用此方法时,请确保将每个按钮状态设置为不仅应隐藏的状态,以便在视图回收时,视图获取新项目状态而不是旧状态。

于 2013-02-01T02:39:53.350 回答
0

阿马尔有你的部分答案。当您的适配器收到 getview 调用时,完全重新初始化重用的视图。

至于你的速度问题。听起来您希望您的适配器延迟加载其数据。您加载该数据的速度很慢。有些东西必须付出。此问题的常见解决方案是在后台线程中加载数据。

于 2013-02-01T04:08:22.167 回答