2015-10-12 2 views
1

У меня есть ListView, который я устанавливаю для своего адаптера. Элемент ListView содержит два элемента вида, которые являются chekbox и TextView.Как получить подсчет элемента списка в Android

Я дал setChoiceMode(ListView.CHOICE_MODE_MULTIPLE) для ListView.

Когда я хочу выбрать один или несколько элементов, я хочу получить счет (на основе выбора и отмены выбора).

Я не могу делать это в onItemClickListener от ListView.

Итак, я написал логику в BaseAdapter.

holder.check.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      count += 1; 
     } 
    }); 

Но Если я снял выделение с объекта, значение должно уменьшаться. Если IAM, имеющий только один элемент в ListView то я могу написать

SparseBooleanArray checked = listView.getCheckedItemPositions(); 

и получить значение в фрагменте. Просто я запутался. Может кто-нибудь мне помочь?

+0

Возможно, вы можете найти ответ на свой вопрос здесь: http://stackoverflow.com/questions/3896294/get-number-of-selected-items-in-android -Посмотреть список ? с помощью getCheckedItemCount()? –

ответ

1

Используйте это.

SparseBooleanArray checkedItemPositions = getListView().getCheckedItemPositions(); 
int count = 0; 
for (int i = 0, ei = checkedItemPositions.size(); i < ei; i++) { 
    if (checkedItemPositions.valueAt(i)) { 
     count++; 
    } 
} 
// use count as you wish 

count Убедитесь, что в локальной (или блок OnClickListener) область видимости, так что каждый раз, когда вы нажимаете на кнопку или что-то, счет получает сброс и пересчитывает, сколько элементов проверяются/снят.

Позвольте мне знать, если у вас есть еще вопрос :)

+0

Как я могу использовать этот getListView(). GetCheckedItemPositions(); в моем адаптере? –

+0

вместо использования getListView() вы можете передать объект ListView и получить прямой доступ, например 'myListView.getCheckedItemPositions();' –

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