远程JSON解析(Kotlin)

问题描述 投票:0回答:1

抱歉新手问题:我是 Android/Kotlin 新手。

RecyclerView 中正在解析远程 JSON。

这是带有此 RecyclerView 的 Activity 的实际代码:

import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import org.json.JSONArray
import org.json.JSONException
import org.json.JSONObject
import java.io.IOException
import okhttp3.*

class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            val client = OkHttpClient()
    
            val list = ArrayList<ListItem>()
    
            val rcView = findViewById<RecyclerView>(R.id.rv_content)
            rcView.layoutManager = LinearLayoutManager(this)
            rcView.adapter = MyAdapter(list, this)
            rcView.hasFixedSize()
    
            val request: Request = Request.Builder()
                .url("http://89.111.173.213:8000/api/")
                .build()
    
            client.newCall(request).enqueue(object : Callback {
                override fun onFailure(call: Call, e: IOException) {
                    e.printStackTrace()
                }
    
                override fun onResponse(call: Call, response: Response) {
                    val strResponse = response.body!!.string()
    
                    val jsonObj: JSONObject = JSONObject(strResponse)
    
                    try {
                        val episodeArray = JSONArray(jsonObj)
                        for (i in 0 until episodeArray.length()) {
                            val episodeDetails = episodeArray.getJSONObject(i)
                            list.add(
                                ListItem(
                                    episodeDetails.getString("pub_date"),
                                    episodeDetails.getString("title"),
                                    episodeDetails.getString("description"),
                                    episodeDetails.getString("youtube_link")
                                )
                            )
                        }
                    } catch (e: JSONException) {
                        e.printStackTrace()
                    }
                }
            })
        }
    }

问题是应用程序已构建,但 RecyclerView 为空。

请您指出我哪里错了?

android json kotlin
1个回答
0
投票

您必须调用 rcView.adapter.notifyDataSetChanged() 来通知您的适配器数据列表已更改,建议将您的适配器放在单独的变量中

在Recyclerview适配器上设置notifyDataSetChanged()

© www.soinside.com 2019 - 2024. All rights reserved.