2016-08-03 1 views
0

Это мой номер CustomObdRowAdapter.java Я добавил строку «Выбрать все» вверху, когда пользователь ее выберет, все элементы в текущем listView должны быть отмечены, но как мне их реализовать в моем настраиваемый адаптер строки?Добавление строки Select All в ListView

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); } // конец функции getView

В приведенном выше коде они имеют две вещи: сначала изменить тег установки для просмотра и поместить его в конце функции, прежде чем возвращать convertView и второй создать логическое значение для проверки allTrue и когда все элемент, выбранный для вызова списка звонков, затем уведомляет усыновителя о необходимости перерисовать.

Смежные вопросы