java - 删除 RecyclerView 中的项目

标签 java android android-recyclerview

我试图实现一个功能,如下描述:RecyclerView 中的每个项目将在 5 秒后被删除。我的代码如下:

new CountDownTimer(60000, 1000) {
    @Override public void onTick(long l) {
        Log.v(TAG, "Ticking: " + l);
        for (int i = 0, dataLength = mComments.size(); i < dataLength; i++{
            RoomMessage item = mComments.get(i);
            // item.timeRemaining initial value is 5000
            item.timeRemaining -= 1000;
            if (item.timeRemaining <= 0) {
                mComments.remove(i);
                notifyItemRemoved(i);
            }
        }
    }
    @Override public void onFinish() {
        start();
    }
}.start();

应用程序崩溃并显示错误消息,如 java.lang.IndexOutOfBoundsException: Index: 4, Size: 4 出了什么问题?

最佳答案

问题出在你的 for 循环中。

    for (int i = 0, dataLength = mComments.size(); i < dataLength; i++)

dataLength 将仅初始化一次(与 i 相同),然后该值将用于下一次迭代。因此,如果列表大小最初为 4,则 dataLength 始终为 4,其中列表大小将不断减小,这将导致 IndexOutOfBoundsException

将 for 语句更改如下:

    for (int i = 0; i < mComments.size(); i++)

关于java - 删除 RecyclerView 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42254808/

相关文章:

java - Bean验证: Does @Digits validator support Double?

Java 9 --release 标志似乎在 Gradle 中不起作用

java - 自定义滚轮监听器阻止 ScrollPane 滚轮监听器

android - RecyclerView onBindViewHolder 为一项调用多次

java - 当已位于底部并添加新项目时,将 recyclerView 保留在底部

java - HttpUrlConnection block 大小和视频文件

android - 相对布局中的元素在应用程序运行时显示不同

android - 在 Android Studio 中恢复 LogCat 窗口

android - 高效开发修改AOSP framework.jar

android - LinearLayoutManager 无法解析 getOrientation()