当前位置: 首页 > 知识库问答 >
问题:

片段中的Listview适配器出现空指针异常

萧焱
2023-03-14

我在一个片段中制作了一个listview列表视图的适配器有一个空指针异常,但Arraylist和适配器不为空。

错误:lvElevator不能为null

错误是针对以下行的

电梯。适配器=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个答案

祖新觉
2023-03-14

您正在尝试在片段膨胀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) 修改如下方法。

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
}

作为一名经验丰富的开发人员,我建议使用第一种方法,因为该方法只有在布局完全膨胀后才会进入范围。

 类似资料:
  • 我用两个项目做了一个微调器,我想将文本颜色更改为白色,所以我做了一个xml... 我尝试这样做来设置适配器.... 但它给了我一个错误!它说在 spinner.setAdapter() 行上有一个空指针异常。我看到人们这样做的其他问题,它实际上是有效的,所以我不知道发生了什么。这是微调器的代码.... 最初的问题已修复,但现在它没有显示任何条目。

  • Bank.java文件代码 Custom_listview.xml布局 activity_bank.xml 获取此错误 E/AndroidRuntime: 致命异常: main Process: com.example.bloodbank, PID: 16440 java.lang.NullPointerException: 尝试在 android.widget.ArrayAdapter.crea

  • 公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){View v=inflater.inflate(r.layout.fragment_main,container,false); fragment.xml null

  • 我试图展示一个祝酒词,当我的API请求不工作,由于没有互联网连接。首先,我尝试在try块失败时显示一个Toast,然后在catch块中显示这个Toast。我尝试了developer.android.com的方法,但我甚至无法启动应用程序。 我在catch-block中的代码是这样的: 我似乎对方法有问题,因为它突出显示为红色。这似乎是一个问题,因为我在一个片段内部使用这个。我在使用时读到了一些内容

  • 我试图在列表视图的onItemClick中用另一个片段替换片段,我想将所选项目名称从列表片段发送到另一个片段,但它显示空指针异常 @覆盖onItemClick上的公共无效(AdapterView ar0,视图,int位置,长id){ 但是同样的概念在下面的按钮点击中工作

  • 我已经尝试解决一个问题几个小时了,但我没有解决它。我尝试为可扩展列表视图设置适配器,但我接受了这个错误。多谢了。“尝试对空对象引用调用虚拟方法”void Android.Widget.ExpandableListView.SetAdapter(Android.Widget.ExpandableListAdapter)“”