[英]How to change a global variable from a anonymous class implementation in kotlin
fun loadTweets(uid: Int) : Observable<ArrayList<Tweet>> {
var tweets: ArrayList<Tweet> = ArrayList<Tweet>()
val builder: Retrofit.Builder = Retrofit.Builder()
.baseUrl(NetworkContract.SERVER_URL)
.addConverterFactory(GsonConverterFactory.create())
val retrofit: Retrofit = builder.build()
val userService: UserService = retrofit.create(UserService::class.java)
val call: Call<List<Tweet>> = userService.loadTweets(uid)
call.enqueue(object: Callback<List<Tweet>>{
override fun onResponse(call: Call<List<Tweet>>?, response: Response<List<Tweet>>?) {
if(response!!.isSuccessful){
val tweetsTemp: ArrayList<Tweet> = ArrayList<Tweet>()
tweetsTemp.add(Tweet("Test!", "Tom"))
mTweets = tweetsTemp
}
}
override fun onFailure(call: Call<List<Tweet>>?, t: Throwable?) {
}
})
return Observable.just(this.mTweets)
}
大家好,我想創建一個Twitter Clone,但無法返回更改后的mTweets變量。 我從服務器收到響應,並且在onResponse方法中,mTweets發生了變化,但是我的函數確實返回了一個空字符串。(順便說一下,tweetsTemp僅用於測試。稍后我將對其進行更改)。
您無法返回mTweets
因為網絡調用正在異步運行。
在此處閱讀有關同步和異步請求的更多信息: https : //futurestud.io/tutorials/retrofit-synchronous-and-asynchronous-requests
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.