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
相关产品推荐
相关产品推荐

