【问题标题】:retrofit returns null string改造返回空字符串
【发布时间】:2020-10-01 01:34:04
【问题描述】:

我正在尝试从改造回调中获取我的应用程序的文本视图中的字符串。我正在使用一个 android JSON 数据示例并进行改造调用以将该数据作为字符串检索。由于某种原因得到空值响应。 Gradle 和 Manifest 似乎很好。不幸的是,在相关主题中没有找到答案。将不胜感激。

API:

private const val BASE_URL =
    "https://android-kotlin-fun-mars-server.appspot.com/"

private val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()



private val retrofit = Retrofit.Builder()
    .addConverterFactory(MoshiConverterFactory.create(moshi))
    .baseUrl(BASE_URL)
    .build()

interface WordsApiService {
    @GET("realestate")
    fun getProperties():
            Call<List<MarsProperty>>
}

object WordsApi {
    val retrofitService : WordsApiService by lazy {
        retrofit.create(WordsApiService::class.java) }
}

视图模型:

class QuizWordListViewModel: ViewModel() {


    private var _response = String()

    val myWordsAsString
        get()=_response

    init {
        getWordsFromNet()
    }




    private fun getWordsFromNet():String {

        WordsApi.retrofitService.getProperties().enqueue(

            object: Callback<List<MarsProperty>> {
                override fun onResponse(call: Call<List<MarsProperty>>, response: Response<List<MarsProperty>>) {
                    _response = "Success: ${response.body()?.size} Words retrieved"
                }

                override fun onFailure(call: Call<List<MarsProperty>>, t: Throwable) {
                    _response = "Failure: " + t.message
                }
            })

        return _response
    }
}

活动:

class QuizWordListActivity : AppCompatActivity() {

    private val viewModel: QuizWordListViewModel
            by lazy {ViewModelProvider(this).get(QuizWordListViewModel::class.java) }


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)


        setContentView(R.layout.quiz_word_list_activity)
        var testObject:TextView = testObject

        testObject.text = viewModel.myWordsAsString

    }


}

物业

data class MarsProperty(
    val id: String, @Json(name = "img_src") val imgSrcUrl: String,
    val type: String,
    val price: Double
)

【问题讨论】:

    标签: android kotlin


    【解决方案1】:

    realestate 是 JSON 响应;最好改用MoshiConverterFactory

    【讨论】:

    • 我实现了 moshiconverterfactory 和属性。问题依旧。你能检查我的活动吗?它从主活动中按下的按钮开始。
    猜你喜欢
    • 2020-01-27
    • 2020-07-11
    • 2015-05-25
    • 2011-05-09
    • 1970-01-01
    • 2012-07-20
    • 2011-12-15
    • 2020-11-23
    • 2015-12-21
    相关资源
    最近更新 更多