Android Listview修改所有项目

Android Listview修改所有项目,android,listview,Android,Listview,修改listview的所有子元素(不仅仅是可见元素)的正确方法是什么。 我有一个默认设置为Visibility gone的图像。我希望在用户单击一个按钮(针对所有项目)后使其可见 谢谢 您可能应该在ListAdapter的getView()中根据某些字段值设置图像可见性。单击按钮后,您将更改此字段值,然后调用ListAdapter.notifyDataSetChanged,因此列表视图将更新-getView,然后调用,图像将更改,因为您的字段值已更改 修改listview的所有子元素(不仅仅是可

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


谢谢

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

修改listview的所有子元素(不仅仅是可见元素)的正确方法是什么

关于
列表视图
需要了解的一点是,并非所有列表项都是在任何给定时间生成(膨胀/填充)的

例如,假设您的列表
适配器
中有1000项,但
列表视图
一次只能显示10项。创建所有1000个列表项将是对资源(例如内存)的严重浪费

相反,只创建10个可见项目,每次从屏幕顶部或底部滚动一个项目时,消失的项目将作为
convertView
传递到
适配器的
方法中,重新循环

getView (int position, View convertView, ViewGroup parent)
要执行您要求的操作,您应该扩展您希望使用的
适配器
类型,并覆盖
getView
方法。在该方法中,检查
convertView
是否为
null
。如果是,请膨胀您自己的列表项布局实例。如果不为空,则重新使用UI元素(
TextView
ImageView
等)

要使所有
ImageView
元素可见,请使用全局
Boolean
,如
showImageView
,按下按钮即可切换。然后在
getView
中使用它来决定是否设置
ImageView
的可见性

请参见适配器的
getView()
中的,您可以抓取ImageView并将其可见性设置为gone:

ImageView iv = (ImageView)convertView.findViewById(R.id.image_view);
iv.setVisibility(buttonClicked ? View.GONE : View.VISIBLE);
然后,当用户单击按钮时,设置
buttonClicked=true
,并调用
notifyDataSetChanged()
刷新列表视图