从RecyclerView中删除项目不能正常工作

时间:2017-02-15 18:32:00

标签: java android android-recyclerview

我没有在RecyclerView上自定义任何内容,因此添加/删除了项目的默认动画。虽然我发现动画没有像我预期的那样工作。当我通过以下代码删除项目时:

mComments.remove(position);
notifyItemRemoved(position);

我在UI上看到它总是删除错误的一个,应该删除的那个已经不断显示并覆盖其他的。

new CountDownTimer(60000, 1000) {
    @Override
    public void onTick(long l) {
        for (int i = 0; i < mComments.size(); i++) {
            RoomMessage item = mComments.get(i);
            item.timeRemaining -= 1000;

            if (item.timeRemaining <= 0) {
                Log.v(TAG, "Going to remove no." + i + ". And the content = " + mComments.get(i).text);
                removeAt(i);
            }
        }
    }

    @Override
    public void onFinish() {
        start();
    }
}.start();

根据日志,我确实删除了正确的。见如下。

02-16 15:26:38.274 21861-21861/com.xxxx.android V/ChatsAdapter: Going to remove no.0. And the content = 1
02-16 15:26:41.284 21861-21861/com.xxxx.android V/ChatsAdapter: Going to remove no.0. And the content = 2
02-16 15:26:42.284 21861-21861/com.xxxx.android V/ChatsAdapter: Going to remove no.0. And the content = 3

我做错了什么?

btw我设置了setisRecyclable(false)

1 个答案:

答案 0 :(得分:0)

仅使用driver.findElement(By.xpath("//*[text() = 'Username']/following::input[1]"));。您正在使用两者。 notifyItemRemoved(position);用于通知先前位于位置的项目已从数据集中删除。虽然仅在通知任何已注册的观察者时才使用notifyItemRemoved,因为从位置positionStart开始的itemCount项已更改。如果您要添加单个项目,请使用notifyItemRangeChanged(int positionStart, int itemCount)。如果您添加了多个新项目,请使用notifyItemInserted。任何以已更改结尾的方法都会声明该特定项目或行的值已更改。