片段中的 Listview 适配器给出空指针异常
Posted
技术标签:
【中文标题】片段中的 Listview 适配器给出空指针异常【英文标题】:Listview adapter in a fragment giving null pointer exception 【发布时间】:2019-11-19 21:48:42 【问题描述】:我在片段中创建了一个列表视图 列表视图的适配器出现空指针异常 但是 Arraylist 和适配器不为空。
错误:lvElevator 不能为空
错误出现在下面一行
lvElevator.adapter = EAdapter
片段类
var EList=ArrayList<E1List>()
class EDetails: Fragment()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View?
EList.add(E1List(1))
EList.add(E1List(2))
var EAdapter = EleAdapter(EList)
lvElevator.adapter = EAdapter
return inflater.inflate(R.layout.fragment_elevators, container, false)
inner class EleAdapter : BaseAdapter
var EListAdapter = ArrayList<E1List>()
constructor(EListAdapter: ArrayList<E1List>) : super()
this.EListAdapter = EListAdapter
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View
var myView = layoutInflater.inflate(R.layout.elevator_ticket, null)
var myEle = EListAdapter[position]
myView.tvEnum.text = myEle.elevatornum.toString()
return myView
override fun getItem(position: Int): Any
return EListAdapter[position]
override fun getItemId(position: Int): Long
return position.toLong()
override fun getCount(): Int
return EListAdapter.size
【问题讨论】:
【参考方案1】:您试图在片段膨胀 xml 布局文件之前定义 lvElevator。 有两种方法可以修复它。
1) 改用 onViewCreated()
方法将数据加载到视图中。并使用 onCreateView 方法只为视图充气。
override fun onViewCreated(view: View, savedInstanceState: Bundle?)
EList.add(E1List(1))
EList.add(E1List(2))
var EAdapter = EleAdapter(EList)
lvElevator.adapter = EAdapter
2)修改onCreateView()
方法如下。
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View?
// Define views manually..
val view = inflater.inflate(R.layout.fragment_elevators, container, false)
val lvElevator = view.findViewById<ListView>(R.id.lvElevator)
EList.add(E1List(1))
EList.add(E1List(2))
var EAdapter = EleAdapter(EList)
lvElevator.adapter = EAdapter
return view
作为一名经验丰富的开发人员,我建议使用第一种方法,因为该方法仅在布局完全膨胀后才会出现。
【讨论】:
以上是关于片段中的 Listview 适配器给出空指针异常的主要内容,如果未能解决你的问题,请参考以下文章
Listview设置适配器片段nullpointerexception
自定义 Adapter 的 getView() 中的空指针异常
在扩展数组适配器时自定义适配器的getView()中的空指针异常