我正在开发一个支持冰淇淋三明治 API 的 Android 应用程序,但可以在运行 android 2.1 等旧设备上工作。
我通过检查当前的 API 版本来做到这一点,如果它的冰淇淋三明治后调用一个活动,然后如果它在下面的任何内容,调用另一个活动。
我允许用户执行搜索,当它获得结果时,它会清除 ArrayList,然后将搜索中的项目添加回来,然后调用 arrayadapter.notifydatasetchanged。这段代码我从 ICS 版本复制并粘贴到 ICS 之前的版本中,ICS 工作正常,但在 ics 之前的版本中,列表视图没有得到更新。以下是我拥有的代码。
public void performSearch(ArrayList<Spanned> searchPasswords)
{
if (searchPasswords.size() > 0)
{
btnClearSearch.setVisibility(View.VISIBLE);
passwords.clear();
for (int i = 0; i < searchPasswords.size(); i++)
{
passwords.add(searchPasswords.get(i));
}
passwordArrayAdapter.notifyDataSetChanged();
btnClearSearch.setOnClickListener(mBtnClearSearch);
common.showToastMessage(searchPasswords.size() + " result(s) found", Toast.LENGTH_LONG);
}
else
{
common.showToastMessage("No search results found", Toast.LENGTH_LONG);
}
}
我已经调试了这个函数,所以它明确地调用它,它显示了 toast 消息,说明找到了多少结果,但列表视图没有改变。
更新
我刚刚发现了一个有点令人困惑的发现。作为对执行列表视图初始加载的函数的测试,我手动创建了一个新搜索ArrayList<Spanned>
并将其传递给PerformSearch(ArrayList<Spanned>
我遇到问题的相同),并且这可以正常工作。
performSearch 不更新 ListView 的问题似乎只发生在从 onActivityResult 调用它时。我知道 onActivityResult 工作正常,因为当调用 performSearch 函数时,它会打印出找到 1 个结果,所以它肯定得到了数据,只是列表视图没有从调用 performSearch 函数的 onActivityResult 中刷新。