Android Listview修改所有项目

时间:2012-05-11 19:42:07

标签: android listview

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

谢谢!

3 个答案:

答案 0 :(得分:2)

  

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

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

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

相反,只创建了10个可见项目,每次从屏幕顶部或底部滚动一个项目时,已消失的项目将通过convertView传递到{{1}来重新循环}} Adapter's方法。

getView

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

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

请参阅Adapter.getView(...)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

在适配器的getView()内,您抓住ImageView并将其可见性设置为:

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

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