我有一個複選框,將在聽衆每個row.The代碼使用複選框選擇在ListView中的所有項目:選擇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和設置這是真的:
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);
}
}
});
我希望能夠按照我喜歡的方式打開和關閉全部選擇,但目前只能使用一次。
編輯:解決與評論的幫助。
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();
}
}
});
謝謝Poovizhirajan.N
中的其他部件U再次給出checkAll =真 –
solved.i不得不根據情況改變這兩個參數,而複選框被選中並未檢查。 – vamsiampolu
我可以發佈我的答案>? –