android - 如何为 Http get 请求创建一个 while 循环以不断重复该过程直到某个值为真?在科特林
问题描述
我想发出一个 Http 获取请求。我有一个返回 JSON 作为响应的 API。这个 json 有一个键 can_load,如果有更多的项目要加载,它的值为 true,并且它需要页码来继续加载一组项目。第一次我将页码设为 1,然后我想要页码。保持递增 1 直到 can_load 值为真。我试过创建一个函数。整个过程发生的主体,然后是一个while循环,它在增加pageNum后调用乐趣,但我没有得到任何结果。没有 fun 和 while 循环,我得到 pageNum 1 中的第一组项目。我想将 pageNum 增加到 2,依此类推,直到值为 true。Oncw 布尔值是假的,它应该停止。
var canload: Boolean
var pageNum = 1
fun loadItems() {
if(status == "1") {
Log.v("statusUserId", userId!!)
val httpClient4 = AsyncHttpClient()
httpClient4.get("https://somesite.com/services/ajax_v6.7.aspx?app=android&ver=6.59&lang=en&countryId=1&cat=getItem&userId=$userId&pageNum=$pageNum&&occasionLink=", object : AsyncHttpResponseHandler() {
override fun onSuccess(statusCode: Int, headers: Array<out Header>?, responseBody: ByteArray?) {
if (responseBody != null) {
val charset4 = Charsets.UTF_8
val json4 = String(responseBody, charset4)
val gson4 = Gson().newBuilder().serializeNulls().create()
val itemscreenresult = gson4.fromJson<Json4>(json4, genericType<Json4>())
jsonInfo6.addAll(itemscreenresult.result.data)
Log.v("json4", json4)
Log.v("Itemscreenresult", itemscreenresult.toString())
Log.v("Jsoninfo6", jsonInfo6.toString())
canload = itemscreenresult.result.can_load
Log.v("homeresult userID", canload.toString())
itemscreenAdapter?.notifyDataSetChanged()
while(canload==true){
pageNum = pageNum + 1
loadItems()
}
}
}
override fun onFailure(statusCode: Int, headers: Array<out Header>?, responseBody: ByteArray?, error: Throwable?) {
Log.v("Test", error?.message ?: "")
}
} )
}
}
解决方案
推荐阅读
- java - 如何更改我的正则表达式以拒绝下划线
- windows - BAT 文件中的“输入行太长”错误
- android - Android:将数据从 RecyclerView 传递到另一个 Activity
- javascript - 将firebase云功能拆分为不同文件的正确方法是什么?
- python - Python Pandas 使用 for 循环添加行的问题
- python - 如何将 DASK 数据帧放入 MySQL 数据表?
- python - SWIG 将 C++ 扩展到 Python,未定义的枚举
- reactjs - 在反应中显示表格数据的更好方法
- python - REGEX - 查找特定的 XML 标记并通过它进行解析
- java - 如何把数字时间变成英文名字