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

标签 android listview android-arrayadapter

我正在开发一个主要由 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/

相关文章:

android - 使用蓝牙 LE "Proximity"配置文件 Android 检测接近度

android - 即使在postValue()Kotlin之后,MutableLiveData ArrayList也为空

android - 如何判断一个 View 在ListView中是否可见?

java - 从android中的另一个类调用mainactivity中的方法

android - 将三个 ArrayList 合二为一并在自定义 ListView 中查看

java - Android Libgdx 纹理大小

Android:ViewHolder 模式和不同类型的行?

winforms - powershell 中的 System.Windows.Forms.ListView 隐藏输出

java - 如何更改List<Date>的日期格式

java - 如何动态添加项目到 ListView