Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android数据绑定,onItemrangeMoved-一个条目块何时在列表中移动?_Java_Android_List_Collections_Android Databinding - Fatal编程技术网

Java Android数据绑定,onItemrangeMoved-一个条目块何时在列表中移动?

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

我目前正在使用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
但这是什么时候发生的?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
每次都会被触发-如文档所述