0

我有带有 ListView 和按钮的 Activity - “全部清除”和“确定”。在“全部清除”按钮上,我清除了项目的检查状态 - 它工作正常。

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);
    }
});
4

1 回答 1

3

如果您正在使用ListViews ,则需要notifyDataSetChanged()在更改任何数据时从 UI 线程调用。getView()这将通过多次调用来更新 UI ,具体取决于显示的项目数。

确保您getView()的正确实施。

作为参考,我强烈建议您查看和理解:http ://www.youtube.com/watch?v=wDBM6wVEO70

于 2011-12-06T09:51:40.250 回答