使用android支持库com.android.support:recyclerview-v7:23.1.1
。
在使用一堆项目调用SortedList.addAll()之后,列表可能会以重复项结束。特别是,如果新添加的项目存在但会以影响其排序的方式进行更改,则会发生这种情况。
代码示例:
class TestItem {
final int id;
final String name;
TestItem(int id, String name) {
this.id = id;
this.name = name;
}
}
SortedList<TestItem> list = new SortedList<TestItem>(TestItem.class, new Callback<TestItem>
() {
@Override
public int compare(TestItem o1, TestItem o2) {
if (areItemsTheSame(o1, o2)) {
return 0;
} else {
return o1.name.compareTo(o2.name);
}
}
// onXxx methods left out for readability
@Override
public boolean areContentsTheSame(TestItem oldItem, TestItem newItem) {
return oldItem.name.equals(newItem.name);
}
@Override
public boolean areItemsTheSame(TestItem item1, TestItem item2) {
return item1.id == item2.id;
}
});
list.add(new TestItem(1, "Bravo"));
list.add(new TestItem(2, "Charlie"));
list.addAll(new TestItem(2, "Alpha"));
运行此代码后,列表将包含[Alpha, Bravo, Charlie]
,而不是[Alpha, Bravo]
Alpha
Charlie
应该替换 newItems
)
最好的方法是什么?
答案 0 :(得分:0)
我已将此作为bug提交给Google。
针对一组新项list.beginBatchedUpdates();
for (TestItem item : newItems) {
list.add(item);
}
list.endBatchedUpdates();
<a>