I have a check box which will select all items in the ListView using a checkbox in each row.The code for the listener:
check_all.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton view, boolean checked) {
// TODO Auto-generated method stub
if(checked==true)
{
checkAll=true;
adapter.notifyDataSetChanged();
}
else if(checked==false)
{
clearAll=true;
adapter.notifyDataSetChanged();
}
}
});
I also used setNotifyOnChange and set it true:
final CheckAdapter adapter=new CheckAdapter(this,R.layout.layout_row,R.id.movie_name,arr);
adapter.setNotifyOnChange(true);
This is the code from the Adaptr's getView method concerning the checkbox:
if(checkAll)
{
watched.list.clear();
holder.cb.setChecked(true);
}
if(clearAll)
holder.cb.setChecked(false);
holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton button, boolean checked) {
button.setChecked(checked);
RelativeLayout parent=(RelativeLayout)button.getParent();
TextView textView=(TextView)parent.findViewById(R.id.movie_name);
String name=textView.getText().toString();
Log.d("CheckListActivity", "Movie "+name+" has been checked to "+checked);
MovieCheck checkFlick=new MovieCheck(name,checked);
if(checked)
{
watched.addToList(checkFlick);
}
else
{
watched.removeFromList(checkFlick);
}
}
});
I would like to be able to turn the Select All on and off as I like but currently it only works once.
EDIT:Solved with the help of the comment.
check_all.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton view, boolean checked) {
// TODO Auto-generated method stub
if(checked==true)
{
checkAll=true;
clearAll=false;
adapter.notifyDataSetChanged();
}
else if(checked==false)
{
checkAll=false;
clearAll=true;
adapter.notifyDataSetChanged();
}
}
});
Thank you Poovizhirajan.N