簡體   English   中英

如何從Kotlin中的匿名類實現更改全局變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM