我想在点击外部按钮时改变ListView
的每个项目的图像的可见性(我的意思是它不属于ListView
)。
所以我需要访问ListView
的所有子视图。然后我像这样做了一个循环:
for (int i = 0...
{
View child_view = list_view.getChildAt(i);
...
}
问题在于,通过这种方式,我只能访问当前可见的子项,并且我需要访问ListView
的每个子项的视图。
我怎么能这样做?
答案 0 :(得分:1)
解决方案很简单
你的Adapter类中的采用像这样的int数组
int visibilities[]={ImageView.VISIBLE,ImageView.GONE,ImageView.INVISIBLE};
如果您从Drawable Resources设置图像,则可能将ID传递给ArrayList项 像这样的东西
CountriesList.add(new Country("India",R.drawable.india));
在Country类中创建另一个变量(Your Bean类(Getter setter class)) 并将其设置为int 像这样的东西
class Country{
String name;
int flag;
int visibility;
}
在向列表中添加元素时传递这样的可见性
CountriesList.add(new Country("India",R.drawable.india,1));
在适配器的getView()方法中,您可能会像这样设置资源
holder.image.setImageResource(country.getFlag());
也添加此行
holder.image.setVisibility(visibilities[country.getVisibility]);
为了解释这一点,我添加了国家示例..我在我之前的应用程序中使用了相同的技巧...它的功能就像魅力一样..我希望这会对你有帮助。
答案 1 :(得分:1)
我通过以下方式解决了问题:
用以下内容更改所有可见的孩子:enter link description here
更改适配器函数getView中的不可见子节点,因为重要的是,getView会在滚动时刷新。
答案 2 :(得分:0)
您当前的实现不起作用,因为使用list_view.getChildAt(i)将为当前不可见的所有视图返回null。相反,您可以在自定义适配器上调用方法。
for (int i = 0; i < customAdapter.getCount(); i++)
{
customAdapter.getItem(i).setVisibility();
customAdapter.notifyDataSetChanged();
}
程序示例: