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

Android:如何修复Fragment内ListView无法显示数据的问题

问题修复方案

问题根源

你的代码存在一个核心错误:在onCreateView方法中,你先通过inflater.inflate创建了一个view实例,并且为该实例内的ListView设置了适配器,但最后返回的却是重新调用inflater.inflate生成的全新View实例。这两个是完全独立的对象,之前配置好适配器的View根本没有被挂载到界面上,所以你看到的messages_list是空的。

修复后的代码

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // 仅创建一次View实例
    val view = inflater.inflate(R.layout.fragment_blank, container, false)
    val listOfMessages = view.findViewById<ListView>(R.id.messages_list)
    val values = arrayOf("Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2")
    val adapter: ArrayAdapter<String> = ArrayAdapter<String>(view.context, android.R.layout.simple_list_item_1, values)
    listOfMessages.setAdapter(adapter)

    // 返回已经完成配置的同一个View实例
    return view
}

补充说明

LayoutInflater.inflate()方法每次调用都会生成新的View对象,因此必须确保所有View配置操作都作用在最终返回的实例上,这样配置才能在界面上生效。

内容的提问来源于stack exchange,提问作者aefrt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:09:24