android开发 ListView下拉刷新 报 java.lang.IndexOutOfBoundsException: Index: 3, Size: 1

项目是一个预约列表,下拉刷新功能
报错信息

java.lang.IndexOutOfBoundsException: Index: 3, Size: 1
at java.util.ArrayList.get(ArrayList.java:411)
at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:225)
at android.widget.AbsListView.obtainView(AbsListView.java:2371)
at android.widget.ListView.makeAndAddView(ListView.java:1970)
at android.widget.ListView.fillDown(ListView.java:704)
at android.widget.ListView.fillGap(ListView.java:668)

查看日志,发现预约列表原先只要1条数据,下拉刷新之后数据有4条,自己想一下,觉得可能是UI更新了,adapter中的数据没有更新,然后加上tkAdapter.notifyDataSetChanged(),刷新数据。
因为是客户的用户那边出现的bug,没有具体的操作步骤,目前我没有复现出,客户那边也不能配合我复现,所以不能百分之百肯定是不是这个问题。百度出来的解答,报错信息也是不一致的,有没有人能帮帮我

如果不能确定具体报错位置,然后前段又需要改的话 那就严谨一点 无论任何时候去取列表集合里面的数据 判断一些index是否小于集合长度
然后 你说的ui更新了 adapter中的数据源没有更新 那你也不能直接调用tkAdapter.notifyDataSetChanged() 这个方法是当数据源更新的时候 去告诉ListView的adapter需要更新ui的 而不是更新数据源的 所以在此之前先要确定数据源是否更新了 这个取决于你的数据源是如何设置给adapter的 是直接 this.data=data (注:data为数据源集合) 还是this.data=this.data.addAll(newData); 这个意思你懂撒