【发布时间】:2011-07-28 22:08:41
【问题描述】:
我正在开发一个主要由列表视图组成的应用程序。它由我自己的自定义数组适配器支持,其大小每 5 秒更改一次。如果随着数组适配器从较大的大小更改为较小的大小时滚动列表视图,则会出现越界异常。为什么会发生这种情况对我来说是有道理的(因为我正在滚动超出新数组大小的位置),但我想知道是否有调试它的好方法。我似乎无法得出一个明确的结论,我想知道是否可以得到一些帮助。
我使用以下 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 的函数。
有没有解决这个问题的好方法?
问候
【问题讨论】:
-
你有 onScroll 监听器吗?
-
为什么滚动到数组没有的位置?适配器应该只返回你拥有的元素,对吧?
-
@Nikola,我没有 onScroll 监听器,我只是想我需要实现它以防止异常。 dmon,这就是我的问题,呵呵。如果适配器从较大的尺寸变为较小的尺寸,我正在滚动的位置大于较小的尺寸,那就是我得到超出范围的异常。
-
Hmmm.... 项目的位置始终是 - 第一个可见位置..
标签: android listview android-arrayadapter