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