Android 除非设备已旋转,否则notifyDatasetChanged在Gridview上不起作用

Android 除非设备已旋转,否则notifyDatasetChanged在Gridview上不起作用,android,android-arrayadapter,android-gridview,Android,Android Arrayadapter,Android Gridview,这真是个奇怪的问题。它的基本要旨是标题所说的。我有一个适配器,我正在更新并调用它notifyDatasetChanged()但是,问题是它不工作,除非设备至少旋转了一次。我一辈子都搞不懂为什么,在旋转发生后会有什么不同的做法 有关守则如下: 处理它的异步任务 protected void onPostExecute(ArrayList<Records> result) { if (ca == null) { ca = new

这真是个奇怪的问题。它的基本要旨是标题所说的。我有一个适配器,我正在更新并调用它
notifyDatasetChanged()
但是,问题是它不工作,除非设备至少旋转了一次。我一辈子都搞不懂为什么,在旋转发生后会有什么不同的做法

有关守则如下:

处理它的异步任务

protected void onPostExecute(ArrayList<Records> result) {

        if (ca == null)
        {
            ca = new CoverAdapter<Records>(c, R.layout.grid_cover_with_text_item, result);
        }

        if (gv.getAdapter() == null)
        {
            gv.setAdapter(ca);
        }
        else
        {
            new AdapterHelper().update((CoverAdapter) ca, result);
            ca.notifyDataSetChanged;
        }

    }
受保护的void onPostExecute(ArrayList结果){
if(ca==null)
{
ca=新的Coverage Adapter(c,R.layout.grid\u cover\u,带有文本项,结果);
}
if(gv.getAdapter()==null)
{
gv.setAdapter(ca);
}
其他的
{
新的AdapterHelper().update((CoverAdapter)ca,结果);
约1.5%的数据被改变;
}
}
“ca”是我的
适配器
,“gv”是我的
GridView
AdapterHelper()。update
是我在这里找到的一种清除适配器并将
arraylist
的所有结果添加到其中的方法,因此应该正确更新它


请记住,此代码在设备旋转后生效。我现在很困惑,如果有任何见解,我们将不胜感激。提前感谢。

使用调试器并逐步检查代码以检查实际发生的情况


很高兴你发现了问题。。。现在,您可以抛弃浪费的
AdapterHelper
类。

为什么需要一个新类来清除和更新分配给
适配器的
数组列表的内容?至于
,除非设备至少旋转了一次
,否则请使用调试器并逐步执行代码以检查实际发生的情况。@techiServices如果适配器的基础数据正在更改,则该类只是foreach循环将更新的数据插入适配器的助手。在多次遍历代码之后,除了一些我发现非常有趣的东西之外,没有什么不同。在第一次发射时,碎片的索引为0,但经过一次旋转(以及此后的任何旋转)后,其索引为1。该代码在索引为1而不是0时工作。如果有帮助,我正在使用支持库的
FragmentPagerAdapter
为什么需要一个新类?我想,为什么不使用函数呢。我可以使用适配器的
.addAll()
方法来切换,该方法也可以执行相同的操作。不幸的是,这个问题仍然存在。我将继续梳理我的适配器,看看发生了什么。啊,问题超出了我所认为的范围。事实证明,在片段实例化之前,我正在运行ASyncTask(它正在完成)。不管怎样,谢谢你的帮助!