Android 适配器notifyDataSetChanged仅在postDelayed时工作

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

我有一个用于ListActivty的自定义基本适配器。我正在尝试在单击任何项目后更新列表,这是我的onListItemClick代码:

@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以了解修复