Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 适配器最初没有数据,存在同步问题_Java_Android_Synchronization_Adapter - Fatal编程技术网

Java 适配器最初没有数据,存在同步问题

Java 适配器最初没有数据,存在同步问题,java,android,synchronization,adapter,Java,Android,Synchronization,Adapter,我已经写了一个CustomAdapterView。我的问题是,我的CustomAdapterView甚至在有数据之前就运行onLayout 顺序如下: onCreate==>setAdapter=>requestLayout=>onLayout=>//无数据 onResume==>调用服务器==>回调返回服务器数据//太晚了!onLayout现在不会运行了 即使我使用了notifyDataSetChanged也没有效果,因为notifyDataSetChanged只影响当前存在的视图。我的布局中

我已经写了一个
CustomAdapterView
。我的问题是,我的
CustomAdapterView
甚至在有数据之前就运行
onLayout

顺序如下:

onCreate
==>
setAdapter
=>
requestLayout
=>
onLayout
=>//无数据

onResume
==>
调用服务器
==>
回调返回服务器数据
//太晚了!onLayout现在不会运行了

即使我使用了
notifyDataSetChanged
也没有效果,因为
notifyDataSetChanged
只影响当前存在的视图。我的布局中没有视图

所以我的问题是,处理最初没有数据的适配器的正确方法是什么

我知道我可以在异步线程中强制调用
onLayout
requestLayout
,但是每次运行
onResume
时都不必强制调用。毕竟,这是一个一次性问题(此人第一次打开我的应用程序)

那这是我最好的选择吗?或者有没有办法让
setAdapter
先等待适配器数据的更改

我的数据在
oncreate
的UI线程中初始化为
JSONArray data=new JSONArray()


随后在回调中使用
data=newJSONArray(response)
对其进行更改,其中response是我的服务器提供的JSON字符串响应。

如果有人想知道,我创建了一个新线程来执行while循环
requestLayout
。我考虑了一个易变变量,但认为这里没有必要