原文网址:http://www.cnblogs.com/vicma/p/3460500.html
在listView中,每个item都有一个ChexBox,当显示的时候在listView外面设置一个按钮,点击显示和隐藏listView中所有的checBox;
开始的我的实现方法为:
Button add = (Button)findViewById(R.id.add);
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(flage){checkBox.setVisibility(View.VISIBLE);flage=!flage;}
else{checkBox.setVisibility(View.GONE);flage=!flage;}
}
});
后来发现,只能改变listView中第一个checBox,对listView中其他的item不起作用。
以上做法不对,正确的做法是在Adapter中的getView中设置隐藏和显示,做法如下:
在getView中,
final CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkBox);
if(flage){checkBox.setVisibility(View.VISIBLE);}
else{checkBox.setVisibility(View.GONE);}
然后在按钮点击事件中:
@Override
public void onClick(View v) {
flage=!flage;
mySubscriptionsListAdapt.notifyDataSetChanged();
}
notifyDataSetChanged();是实现listView刷新的功能,不需要再次加载整个listView。