You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Volley从MySQL取数据后RecyclerView不显示问题求助

问题解决:RecyclerView未显示已获取的数据

核心原因

Volley网络请求是异步操作,你在回调中往ordersList添加数据时,Adapter已完成初始化,但未通知Adapter数据发生变化,导致RecyclerView无法更新视图。

修改方案

在loadData方法的Volley回调中,数据全部添加到列表后,调用Adapter的notifyDataSetChanged()方法,触发RecyclerView刷新:

修改MainActivity.kt中的loadData函数:

private fun loadData() {
    val queue = Volley.newRequestQueue(this)
    val stringRequest = StringRequest(Request.Method.POST, URL, { response ->
        try {
            Log.e("anytext", response)
            val jsonArray = JSONArray(response)
            // 清空旧数据,避免重复加载
            ordersList.clear()
            for (i: Int in 0 until jsonArray.length()) {
                val jsonObject = jsonArray.getJSONObject(i)
                val order = Order(
                    jsonObject.getInt("ID"),
                    jsonObject.getString("orderDate"),
                    jsonObject.getString("status"),
                    jsonObject.getString("name")
                )
                ordersList.add(order)
                Log.e("order data", order.toString())
                Log.e("array size", ordersList.size.toString())
            }
            // 关键:通知Adapter数据已更新
            rcvAdapter.notifyDataSetChanged()
            
            // 空数据提示优化
            if (ordersList.isEmpty()) {
                Toast.makeText(this, "没有订单数据", Toast.LENGTH_SHORT).show()
            }
        } catch (e: JSONException) {
            e.printStackTrace()
        }

    }, { error ->
        Toast.makeText(
            this, error.message, Toast.LENGTH_LONG
        ).show()
    })
    queue.add(stringRequest)
    Log.e("final", "success")
}

额外优化点

  1. 清空旧数据:每次加载前调用ordersList.clear(),避免重复添加数据导致列表重复显示。
  2. 主线程安全:Volley回调默认在主线程执行,若后续有其他线程操作列表,可使用runOnUiThread包裹更新操作:
    runOnUiThread {
        rcvAdapter.notifyDataSetChanged()
    }
    

内容的提问来源于stack exchange,提问作者Abd elrahman Hussein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:54:51