Установить элемент отмечен в onItemClick / ListView / - PullRequest
0 голосов
/ 06 декабря 2011

У меня Активность с ListView и кнопками - «очистить все» и «ОК». По кнопке «очистить все» я очищаю проверенное состояние элементов - все работает нормально.

m_list.setItemChecked(pos, false); 

На onItemClick Я пытаюсь изменить состояние элементов / проверено <-> не проверено / в зависимости от сложной бизнес-логики Слой бизнес решает проверено или не для более чем одного предмета. Я пытаюсь тот же код:

m_list.setItemChecked(position, bCheck); 

Это не работает. Данные за изменен только вид не.

Код «Очистить все»:

@Override
public void onClick(View v)
{
    if (v == m_map)
        GoToMap();
    else if (v == m_clear)
    {
        for (int i=0; i < m_poiCategories.size();i++)
        m_list.setItemChecked(pos, false);
    }
}

Этот код не работает:

m_list.setOnItemClickListener(new OnItemClickListener()
    {
    @Override
    public void onItemClick(AdapterView<?> listView, View selectedItem, int position, long itemId)
    {
        boolean b = true;
        ....
        m_list.setItemChecked(position, b);
    }
});

1 Ответ

3 голосов
/ 06 декабря 2011

Если вы работаете с ListView s, то требуется, чтобы notifyDataSetChanged() вызывался из потока пользовательского интерфейса при изменении каких-либо данных. Это обновит интерфейс, вызвав getView() несколько раз, в зависимости от количества отображаемых элементов.

Убедитесь, что ваш getView() правильно реализован.

Для справки настоятельно рекомендую просмотреть и понять: http://www.youtube.com/watch?v=wDBM6wVEO70

...