2017-05-27 81 views
0

我'選擇具有自定義對話框中,我展示了一個的ListView複選框。我想通過在對話框中單擊按鈕,選擇ListView中的所有複選框的ListView所有複選框。android系統

這裏是我的按鈕onClickListener

selectAll.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       for (int i = 0; i < listView.getChildCount(); i++) { 
      LinearLayout myLayout =(LinearLayout)listView.getChildAt(i); 
      CheckBox cb = (CheckBox) myLayout.findViewById(R.id.checkbox); 
      cb.setChecked(true); 
       } 
      } 
     }); 

上面的代碼,我只能檢查那些在視圖複選框。 我知道這是因爲listView重用視圖。 請建議我該怎麼辦

+0

您可以添加在列表視圖模型類布爾值,設置爲true時,對話框按鈕點擊,並在你的ListView適配器檢查(布爾==真)checkbox.setchecked (true) –

回答

0

您可以添加布爾變量到你的模型類,並設置你的按鈕點擊監聽器真,看看這個:

  class YourModel{ 
      public boolean isSelected() { 
       return isSelected; 
      } 

      public void setSelected(boolean selected) { 
       isSelected = selected; 
      } 
      } 

你的按鈕的onClick變化。

   public void onClick(View view) { 
        for (int i = 0; i < yourArrayList.size(); i++) { 
         yourArrayList.get(i).setSelected(true); 
        } 
        yourAdapter.notifyDataSetChanged(); 
       } 

適配器getView方法

  public View getView (final int position, View convertView, ViewGroup parent){ 
      CheckBox cb = (CheckBox) myLayout.findViewById(R.id.checkbox); 
      cb.setChecked(yourModel.isSelected()); 
      } 
+0

非常感謝,我爲我工作 –

+0

可以告訴我一件事。選擇複選框後,我關閉並重新打開所有我選擇的複選框應保持選中狀態。 –

+0

你想讓這一切都得到選擇ri8? –