Android 适配器notifyDataSetChanged仅在postDelayed时工作
我有一个用于ListActivty的自定义基本适配器。我正在尝试在单击任何项目后更新列表,这是我的onListItemClick代码:Android 适配器notifyDataSetChanged仅在postDelayed时工作,android,listview,notifydatasetchanged,Android,Listview,Notifydatasetchanged,我有一个用于ListActivty的自定义基本适配器。我正在尝试在单击任何项目后更新列表,这是我的onListItemClick代码: @Override protected void onListItemClick(ListView listView, View view, int position, long id) { String pkg = mAdapter.getItem(position).toString(); boolean isProtected = Appl
@Override
protected void onListItemClick(ListView listView, View view, int position, long id) {
String pkg = mAdapter.getItem(position).toString();
boolean isProtected = ApplicationUtils.isPackageProtected(this, pkg) != null;
PreferenceUtils.setPreference(mContext, null, pkg, !isProtected, false);
mAdapter.notifyDataSetChanged();
}
但是,notifyDataSetChanged不会更新列表视图。作为解决办法,我
@Override
protected void onListItemClick(ListView listView, View view, int position, long id) {
String pkg = mAdapter.getItem(position).toString();
boolean isProtected = ApplicationUtils.isPackageProtected(this, pkg) != null;
PreferenceUtils.setPreference(mContext, null, pkg, !isProtected, false);
Handler adapterHandler = new Handler();
adapterHandler.postDelayed(new Runnable() {
@Override
public void run() {
mAdapter.notifyDataSetChanged();
}
}, 500);
}
有人能给我解释一下为什么会发生这种情况,并告诉我是否还有其他解决办法
谢谢。这是我正在使用的示例代码中的一个bug。我修好了。查看gist上的最后注释以了解更多信息,并查看gist以了解修复