Android-滚动ListView会导致越界异常

Android-滚动ListView会导致越界异常,android,listview,android-arrayadapter,Android,Listview,Android Arrayadapter,我正在开发一个主要由列表视图组成的应用程序。它由我自己的自定义阵列适配器备份,其大小每5秒更改一次。如果在阵列适配器从较大的大小更改为较小的大小时滚动列表视图,则会出现越界异常。为什么会出现这种情况对我来说很有意义(因为我在新数组大小之外的位置滚动),但我想知道是否有一种好的方法来调试它。我似乎不能得出一个明确的结论,我想知道我是否能得到一些帮助 我使用以下异步任务更新适配器 public class myTask extends AsyncTask<Void, Void, Void>

我正在开发一个主要由列表视图组成的应用程序。它由我自己的自定义阵列适配器备份,其大小每5秒更改一次。如果在阵列适配器从较大的大小更改为较小的大小时滚动列表视图,则会出现越界异常。为什么会出现这种情况对我来说很有意义(因为我在新数组大小之外的位置滚动),但我想知道是否有一种好的方法来调试它。我似乎不能得出一个明确的结论,我想知道我是否能得到一些帮助

我使用以下异步任务更新适配器

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();

        }     
}
公共类myTask扩展了AsyncTask{
@凌驾
受保护的Void doInBackground(Void…参数){
同时(正在运行){
myData.clear();
getData();
出版进度();
系统时钟。睡眠(5000);
}
返回null;
}
受保护的void onProgressUpdate(void…progress){
listAdapter.notifyDataSetChanged();
}     
}
myData
是支持
listAdapter
的数组列表,
getData()
是用相关信息填充
myData
的函数,这些信息最终将显示在我的列表视图中

有解决这个问题的好办法吗


关于

当列表大小改变时,您是否尝试过将用户重置为列表顶部或尽可能靠近列表

您正在使用自定义适配器吗

也许在getViewTypeCount()和getItemViewType(int位置)中,它超出了界限。视图类型计数应为(0,n),但项目视图类型应为[0,n]

例如,视图类型计数应为2


但是视图类型应该是0和1,而不是1和2。

对不起,也许不是问题的答案,但是拥有无限循环对我来说似乎不是正确的方式,即使它是一个异步任务

我会尝试使用AlarmManager或计时器

话虽如此,似乎你所拥有的是一个竞争条件,要考虑到当你询问数据或特定位置并重建视图时,它不是立即出现的

干杯,
Francisco。

尝试重写适配器类的getCount()函数:

@Override
public int getCount() {
return [list that contains data].size();
}

你有onScroll listener吗?为什么要滚动到数组没有的位置?适配器应该只返回你有的元素,对吗?@Nikola,我没有onScroll listener,我只是想我需要实现它以防止异常。dmon,这就是我的问题所在,呵呵。如果适配器从一个较大的尺寸到一个较小的尺寸的变化我在一个大于较小尺寸的位置滚动,这时我得到了越界例外。嗯…项目的位置总是-第一个可见的位置..谢谢,Francisco。我接受了你的建议并尝试使用计时器,但我仍然得到相同的错误。T这是一个正在进行的比赛条件,我认为计时器可以解决它。然而,它仍然很少发生。谢谢。我不知道我的listview为什么会越界。它在任何时候都运行良好,除了在刷新搜索时。再次感谢!