2016-08-03 5 views
0

This is my CustomObdRowAdapter.java 맨 위에 "모두 선택"행을 추가했는데, 사용자가 선택하면 현재 listView의 모든 항목을 검사해야하지만 어떻게 구현해야합니까? 사용자 정의 된 행 어댑터?ListView에 Select All 행 추가하기

private class ViewHolder{ 
    CheckBox name; 
} 
@Override 
public View getView(final int position, View convertView, final ViewGroup parent) { 
    ViewHolder holder = null; 
    LayoutInflater settingInflater = LayoutInflater.from(getContext()); 
    if (convertView == null) { 
     convertView = settingInflater.inflate(R.layout.custom_row, parent, false); 
     holder = new ViewHolder(); 
     holder.name = (CheckBox) convertView.findViewById(R.id.checkBox1); 
     convertView.setTag(holder); 


}else{ 
      holder = (ViewHolder)convertView.getTag(); 
     } 
     holder.name.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       CheckBox cb = (CheckBox) v; 
       RowCheckbox rowCommandCheckbox = (RowCheckbox) cb.getTag(); 

       if (cb.getText() == ifAllSelectStr){ 
        if (cb.isChecked()){   
         // Select all items in this listView 
        }else{ 
         // Unselect all items in this listView 
         } 
        } 

답변

1
// select all 
for (int i = 0; i < adapter.getCount(); i++) { 
    list.setItemChecked(i, true); 
} 

// unselect all 
for (int i = 0; i < adapter.getCount(); i++) { 
    list.setItemChecked(i, false); 
} 

당신이

getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
+0

내 customRowAdapter에 있는데, 어떻게 "목록"을 초기화합니까? – Deidara

+0

귀하의 예에서 현재 목록을 참조하는 방법을 여전히 모릅니다. – Deidara

0
boolean isAllTrue=false; 
@Override 
public View getView(final int position, View convertView, final ViewGroup parent) { 
    ViewHolder holder = null; 
LayoutInflater settingInflater = LayoutInflater.from(getContext()); 
if (convertView == null) { 
    convertView = settingInflater.inflate(R.layout.custom_row, parent, false); 
    holder = new ViewHolder(); 
    holder.name = (CheckBox) convertView.findViewById(R.id.checkBox1); 

    } 
else{ 
     holder = (ViewHolder)convertView.getTag(); 
    } 
    holder.name.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      CheckBox cb = (CheckBox) v; 
      RowCheckbox rowCommandCheckbox = (RowCheckbox) cb.getTag(); 

      if (cb.getText() == ifAllSelectStr){ 
       if (cb.isChecked()){   
     isAllTrue=true; 
     // Select all items in this listView 
       }else{ 
       isAllTrue=false; 
        // Unselect all items in this listView 
        } 
       notifyDataSetChanged(); 
       } 
} 

convertView.setTag (홀더) 어댑터 외부에서 이것을 호출 할 필요가 있습니다; // 다른 경우 // 항상 외부에서이 설정 태그를 넣어 태그의 holder.name.setChecked (isAllTrue); } // end of getView 함수

위의 코드는 먼저 viewholder의 설정 태그를 변경하여 convertView를 반환하기 전에 함수 끝에서 배치하고 두 번째 create Boolean을 allTrue에 대해 체크하고 항목을 선택한 후 listner call을 클릭 한 다음 적용 자에게 다시 그리도록 알립니다.