抱歉新手问题:我是 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 为空。
请您指出我哪里错了?
您必须调用 rcView.adapter.notifyDataSetChanged() 来通知您的适配器数据列表已更改,建议将您的适配器放在单独的变量中