各行のチェックボックスを使用して ListView 内のすべての項目を選択するチェック ボックスがあります。リスナーのコード:
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();
}
}
});
また、setNotifyOnChange を使用して true に設定しました。
final CheckAdapter adapter=new CheckAdapter(this,R.layout.layout_row,R.id.movie_name,arr);
adapter.setNotifyOnChange(true);
これは、チェックボックスに関する Adaptr の getView メソッドのコードです。
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);
}
}
});
[すべて選択] を好きなようにオン/オフできるようにしたいのですが、現在は 1 回しか機能しません。
編集:コメントの助けを借りて解決しました。
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();
}
}
});
ありがとうございます。