Java Android数据绑定,onItemrangeMoved-一个条目块何时在列表中移动?
我目前正在使用Androids数据绑定库,它非常有用 但是这个方法让我很困惑 假设参数是Java Android数据绑定,onItemrangeMoved-一个条目块何时在列表中移动?,java,android,list,collections,android-databinding,Java,Android,List,Collections,Android Databinding,我目前正在使用Androids数据绑定库,它非常有用 但是这个方法让我很困惑 假设参数是sender=A、B、C、D、E,fromPosition=0,toPosition=2,itemCount=2 据我所知,它会告诉我: A C B D C results in => A D B E E 但这是什么时候发生的?ObservableLi
sender=A、B、C、D、E
,fromPosition=0
,toPosition=2
,itemCount=2
据我所知,它会告诉我:
A C
B D
C results in => A
D B
E E
但这是什么时候发生的?ObservableList中是否有一种逻辑,它监视条目的顺序,并在受到Collection.sort()或一些复杂集合的刺激时自动调用。旋转(l.sublist(j,k),x)内容,甚至跟踪组,例如[ab]cde->cd[ab]e
itemCount
参数真让我感到奇怪。来自:
每当移动列表中的项目时调用
通过
observearraylist.class
,可以找到一个ListChangeRegistry.class
,它扩展了observelist.OnListChangedCallback
。从observearraylist.class
中,您可以找到类似set()
的方法:
这是被调用的方法:
/**
* Notify registered callbacks that some elements have changed.
*
* @param list The list that changed.
* @param start The index of the first changed element.
* @param count The number of changed elements.
*/
public void notifyChanged(ObservableList list, int start, int count) {
ListChanges listChanges = acquire(start, 0, count);
notifyCallbacks(list, CHANGED, listChanges);
}
这要求:
@Override
public void onNotifyCallback(ObservableList.OnListChangedCallback callback,
ObservableList sender, int notificationType, ListChanges listChanges) {
switch (notificationType) {
case CHANGED:
callback.onItemRangeChanged(sender, listChanges.start, listChanges.count);
break;
//more cases
}
}
由于更改、移动等有时需要设置元素,我想每次都会触发onItemRangeChanged
,如文档所述。来自:
每当移动列表中的项目时调用
通过
observearraylist.class
,可以找到一个ListChangeRegistry.class
,它扩展了observelist.OnListChangedCallback
。从observearraylist.class
中,您可以找到类似set()
的方法:
这是被调用的方法:
/**
* Notify registered callbacks that some elements have changed.
*
* @param list The list that changed.
* @param start The index of the first changed element.
* @param count The number of changed elements.
*/
public void notifyChanged(ObservableList list, int start, int count) {
ListChanges listChanges = acquire(start, 0, count);
notifyCallbacks(list, CHANGED, listChanges);
}
这要求:
@Override
public void onNotifyCallback(ObservableList.OnListChangedCallback callback,
ObservableList sender, int notificationType, ListChanges listChanges) {
switch (notificationType) {
case CHANGED:
callback.onItemRangeChanged(sender, listChanges.start, listChanges.count);
break;
//more cases
}
}
由于更改、移动等有时需要设置
元素,我猜onItemRangeChanged
每次都会被触发-如文档所述