Android ListView行为不正常

时间:2010-11-01 13:38:18

标签: android listview

我正在使用自定义ListView来购买商店前面的商品。您可以滚动列表并阅读产品说明以及查看产品图片。对于用户已拥有的项目,我务实地将标题(列表中的产品)的颜色更改为不同的颜色,以便用户可以轻松识别“我已经拥有”。

当我滚动到列表底部,然后回到顶部时,会出现我看到的错误。在构建UI之后,所有标题都正确地着色,在完成滚动并返回到顶部之后,当前拥有的产品仍然是红色的,并且列表下面的项目也变为“拥有”状态。每次向下滚动列表并备份直到整个列表变为拥有状态时,这将继续发生。

我没有编辑我的产品列表,这发生在我项目中的所有适配器上。每种产品在填充产品列表时都是独一无二的。

是否有某种方法可以保留项目列表并告诉View一旦构建它,不需要安排更改UI更改?

谢谢,

罗伯特

2 个答案:

答案 0 :(得分:1)

在适配器中构建列表项时,您需要一个else-case来处理所有事情。我怀疑你有这样的事情:

if (item_is_owned)
   change_color_to_red();

你需要一个其他案例:

if (item_is_owned)
   change_color_to_red();
else
   change_color_to_normal();

答案 1 :(得分:1)

您可以考虑为适配器创建的视图使用不同的视图类型。一个用于拥有的项目,另一个用于不拥有的项目。 Adapter方法getViewTypeCount()和getItemViewType()用于执行此操作。您可以避免使用if-then-else逻辑来自定义getView()中的View。如果这个答案需要更多解释,请告诉我。