Android 对象有时在改型/RXJava中为空
我正在使用改型和RXJava来实现我的restful API。我可能有40个不同的端点实现而没有问题,但我有一个单一端点的问题。数据将来自API(我可以在Profiler中看到),有时当我将数据交给我的RecyclerView适配器时,它将正确地呈现并序列化。其他时候,每个值都是空的,尽管探查器中有相同的响应。我将在下面分享一些代码片段。这是一个非常非常奇怪的问题,我似乎无法理解 从API获取数据(在继承的baseactivity的OnCreate中初始化复合一次性)。此调用可以发生多次,具体取决于用户交互。让我知道这是否会导致我的问题Android 对象有时在改型/RXJava中为空,android,kotlin,serialization,retrofit,rx-java,Android,Kotlin,Serialization,Retrofit,Rx Java,我正在使用改型和RXJava来实现我的restful API。我可能有40个不同的端点实现而没有问题,但我有一个单一端点的问题。数据将来自API(我可以在Profiler中看到),有时当我将数据交给我的RecyclerView适配器时,它将正确地呈现并序列化。其他时候,每个值都是空的,尽管探查器中有相同的响应。我将在下面分享一些代码片段。这是一个非常非常奇怪的问题,我似乎无法理解 从API获取数据(在继承的baseactivity的OnCreate中初始化复合一次性)。此调用可以发生多次,具体取
compositeDisposable.add(userManager!!.getFriendsForUser(1, false).subscribe(
{ data ->
for (item in data){
//these are sometimes null, but not always!
Log.e("INFO","ITERATING THRU DATA " + item.user_id)
Log.e("INFO","ITERATING THRU DATA " + item.jsonString())
}
},{ e ->
//no error printing, 200 code from API.
e.printStackTrace()
}))
用户管理器!!。getFriendsForUser()
在“/friends?p=1&filter\u chat=0”的探查器(有时序列化)中找到响应正文
[
{
"user_id":1,
"avatar_url":"https://www.google.com",
"name":"Jay",
"display_name":"Jay_N",
"anonymous_flag":0,
"chat_enabled_flag":1
}
]
希望撞上这个。这肯定是一个奇怪的错误!
@GET()
Single<List<UserShortProfile>> getFriendsForUser(
@Url String url);
class UserShortProfile {
@JsonProperty("user_id")
var user_id: Int? = null
@JsonProperty("name")
var name: String? = null
@JsonProperty("avatar_url")
var avatar_url: String? = null
@JsonProperty("display_name")
var display_name: String? = null
@JsonProperty("anonymous_flag")
var anonymous_flag: Int? = null
@JsonProperty("chat_enabled_flag")
var chat_enabled_flag: Int? = null
fun jsonString(): String {
val json = Gson().toJson(this)
return json.toString()
}
fun jsonBody(): RequestBody? {
val json = Gson().toJson(this)
return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json)
}
}
[
{
"user_id":1,
"avatar_url":"https://www.google.com",
"name":"Jay",
"display_name":"Jay_N",
"anonymous_flag":0,
"chat_enabled_flag":1
}
]