删除Recyclerview中的项目



i试图实现一个功能作为描述: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 (int i = 0, dataLength = mComments.size(); i < dataLength; i++)

DataLength将仅初始化一次(与I相同),然后该值将用于下一个迭代。因此,如果列表大小最初是4,则数据列表将为4个列表大小将继续减小,这将导致 indexOutofBoundSexception

更改for语句如下:

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

问题是 mComments.remove(i);带有 for删除持续时间介绍的物品时,for崩溃。您需要由enter code here替换for,因此:

   迭代器迭代器= mcomments.iterator();    while(iterator.hasnext()){        室友项目= iterator.next();        mcomments.remove(item);        madapter.notifydatasetchanged();    }