gpt4 book ai didi

android - 我的 Android Listview 适配器中的 IndexOutOfBoundsException

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:32 25 4
gpt4 key购买 nike

我一直收到此 IndexOutOfBoundsException,但似乎无法弄清楚是什么原因造成的。我的 ListView 有一个带有对象列表的适配器,并且根据时间戳删除对象。删除是在 getView 方法内部完成的。删除项目后,我调用 notifyDataSetChanged()。

github 上提供了完整的源代码,这里是 ListView 适配器代码的链接:https://github.com/kenneho/run-for-the-bus/blob/master/app/src/main/java/net/kenneho/runnow/adapters/TravelsAdapter.java

这是我不断得到的堆栈跟踪的开始:

java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)
at android.widget.ListView.dispatchDraw(ListView.java:3307)
at android.view.View.draw(View.java:15213)
<snip>

我看到 getView 中的位置值通常可以高达 6 或 7。

这里有人能发现这个错误吗?任何帮助将不胜感激。

问候,肯尼斯

编辑 1:* 链接到使用以下内容的 Activity 代码:https://github.com/kenneho/run-for-the-bus/blob/master/app/src/main/java/net/kenneho/runnow/InfoActivity.java* 我在这里粘贴了最相关的 logcat 部分:http://pastebin.com/5FtU4EaM

最佳答案

终于修复了bug。首先,我按照@Selvin 的建议重构了代码。其次,我添加了一个“removecallback”语句来在创建新的 Runnable 之前停止任何 Runnable:

// Make sure we stop existing timers, if any.
timerHandler.removeCallbacks(timerRunnable);

timerRunnable = new Runnable() {

@Override
public void run() {
removeExpiredTravels(myAdapter);
myAdapter.notifyDataSetChanged();
timerHandler.postDelayed(this, 1000);
}
};

timerHandler.postDelayed(timerRunnable, 0);

感谢您帮助我追踪这个错误。

关于android - 我的 Android Listview 适配器中的 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29015967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com