2

修改列表视图的所有子元素(不仅是可见元素)的正确方法是什么。我有一个默认设置为可见性消失的图像。我希望在用户单击按钮后使其可见(对于所有项目)。

谢谢!

4

3 回答 3

2

修改列表视图的所有子元素(不仅是可见元素)的正确方法是什么。

关于 a 要了解的一件事ListView是,并非所有列表项都是在任何给定时间生成(膨胀/填充)的。

例如,假设您的列表中Adapter有 1000 个项目,但ListView一次只能显示 10 个。创建所有 1000 个列表项将非常浪费资源(例如,内存)。

相反,只创建了 10 个可见项目,并且每次您从屏幕顶部或底部滚动一个项目时,已消失的项目会通过传递convertViewAdapter's getView方法中来重新循环。

getView (int position, View convertView, ViewGroup parent)

要执行您的要求,您应该扩展Adapter您希望使用的任何类型并覆盖该getView方法。在该方法中检查是否convertView存在null。如果是,请扩充您自己的列表项布局实例。如果它不为 null,则重新使用 UI 元素(TextViewImageView)。

要使所有ImageView元素可见,请使用全局变量,Boolean例如showImageView将通过按下按钮进行切换。然后使用它getView来决定是否设置ImageView.

请参阅Adapter.getView(...)

于 2012-05-11T20:14:54.913 回答
0

可能您应该根据某些字段值在ListAdapter's中设置图像可见性。getView()单击按钮后,您更改此字段值,然后调用ListAdapter.notifyDataSetChanged列表视图以更新 -getView然后调用并更改图像,因为您的字段值已更改。

于 2012-05-11T19:51:47.570 回答
0

在适配器内部getView(),您抓取 ImageView 并将其可见性设置为消失:

ImageView iv = (ImageView)convertView.findViewById(R.id.image_view);
iv.setVisibility(buttonClicked ? View.GONE : View.VISIBLE);

然后当用户单击按钮时,设置buttonClicked = true并调用notifyDataSetChanged()以刷新 ListView。

于 2012-05-11T20:26:02.767 回答