我正在开发一个主要由 ListView 组成的应用程序。它由我自己的自定义阵列适配器支持,其大小每 5 秒更改一次。如果当阵列适配器从较大尺寸更改为较小尺寸时滚动 ListView ,则会出现越界异常。对我来说,为什么会发生这种情况是有道理的(因为我滚动到的位置超出了新的数组大小),但我想知道是否有一个好的方法来调试它。我似乎无法得出明确的结论,我想知道是否可以获得一些帮助。
我使用以下 asyncTask 更新适配器...
public class myTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
while(isRunning){
myData.clear();
getData();
publishProgress();
SystemClock.sleep(5000);
}
return null;
}
protected void onProgressUpdate(Void...progress){
listAdapter.notifyDataSetChanged();
}
}
myData
是支持 listAdapter
的 ArrayList,而 getData()
是用以下内容填充 myData
的函数:相关信息最终将显示在我的 ListView 中。
有什么好的方法可以解决这个问题吗?
问候
最佳答案
您使用的是自定义适配器吗?
也许在你的 getViewTypeCount() 和 getItemViewType(intposition) 中它超出了界限。 View 类型计数应从 (0, n] 开始,但项目 View 类型应为 [0, n)。
例如 View 类型计数应为 2
但是 View 类型应该是0和1,而不是1和2。
关于Android - 滚动 ListView 会导致越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6866378/