2013-09-24 43 views
0

我有一個複選框,將在聽衆每個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

+1

中的其他部件U再次給出checkAll =真 –

+0

solved.i不得不根據情況改變這兩個參數,而複選框被選中並未檢查。 – vamsiampolu

+0

我可以發佈我的答案>? –

回答

0

在任何時候你的變量clearAll或checkAll重置爲假,所以當你點擊框兩次getView的兩個後if語句總是會進入。

0

使用本...

if(checked==true) 
{ 
    checkAll=true; 
    adapter.notifyDataSetChanged(); 
} 
else if(checked==false) 
{ 
    clearAll=false; 
    adapter.notifyDataSetChanged(); 
} 

謝謝