我有ListView和按钮的活动 - “全部清除”和“确定”。 在“清除所有”按钮上,我清除了项目的检查状态 - 它工作正常。
m_list.setItemChecked(pos, false);
on onItemClick我正在尝试更改项目状态/已检查< - >未经检查/取决于复杂的业务逻辑。 Bussines层决定检查 或不是一个以上的项目。我正在尝试相同的代码:
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);
}
});
答案 0 :(得分:3)
如果您正在使用ListView
,则需要在更改任何数据时从UI线程调用notifyDataSetChanged()
。这将通过多次调用getView()
来更新UI,具体取决于显示的项目数。
确保getView()
已正确实施。
作为参考,我强烈建议您查看并理解:http://www.youtube.com/watch?v=wDBM6wVEO70