Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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
Android 更新回收视图_Android - Fatal编程技术网

Android 更新回收视图

Android 更新回收视图,android,Android,我在recycleView上有点麻烦。 我想使用DiffUtil更新recycleview。 但我不明白为什么它不起作用。 这是我的困难 public class ConsumableDiffCallBack extends DiffUtil.Callback { private List<ConsumableByTask> oldListOfConsumableByTask; private List<ConsumableByTask> newListOfConsum

我在recycleView上有点麻烦。 我想使用DiffUtil更新recycleview。 但我不明白为什么它不起作用。 这是我的困难

public class ConsumableDiffCallBack extends DiffUtil.Callback {

private List<ConsumableByTask> oldListOfConsumableByTask;
private List<ConsumableByTask> newListOfConsumableByTask;

@Override
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
    return oldListOfConsumableByTask.get(oldItemPosition).getQuantity() != newListOfConsumableByTask.get(newItemPosition).getQuantity();
}

@Override
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
    return oldListOfConsumableByTask.get(oldItemPosition).equals(newListOfConsumableByTask.get(newItemPosition));
}}
适配器类中的更新方法

public void updateList(List<ConsumableByTask> list){
    final ConsumableDiffCallBack consumableDiffCallBack = new ConsumableDiffCallBack(this.consumableByTaskList,list);
    final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(consumableDiffCallBack);

    this.consumableByTaskList.clear();
    this.consumableByTaskList.addAll(list);

    diffResult.dispatchUpdatesTo(this);
}
public void updateList(列表){
最终ConsumableDiffCallBack ConsumableDiffCallBack=新的ConsumableDiffCallBack(this.consumableByTaskList,list);
最终DiffUtil.diffesult diffesult=DiffUtil.calculateDiff(consumableDiffCallBack);
this.consumableByTaskList.clear();
this.consumableByTaskList.addAll(列表);
diffResult.dispatchUpdatesTo(本);
}
活动方法

public void sendDataAndCloseFrame() {
    List<ConsumableByTask> listOfConsumable = //get new list from server;

    adapter.updateList(listOfConsumable);


    finish();
}
public void sendDataAndCloseFrame(){
List listOfConsumable=//从服务器获取新列表;
adapter.updateList(可消费列表);
完成();
}

谢谢。

我在我的回收站用这个

private List<bindableAssignment> dataBaseItemList;

public void setItems(final List<bindableAssignment> argumentList) {
    if (dataBaseItemList == null) {
        dataBaseItemList = argumentList;
        notifyItemRangeChanged(0, dataBaseItemList.size());
    } else {
        DiffUtil.DiffResult result = DiffUtil.calculateDiff(new DiffUtil.Callback() {
            @Override
            public int getOldListSize() {
                return dataBaseItemList.size();
            }

            @Override
            public int getNewListSize() {
                return argumentList.size();
            }

            @Override
            public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
                return dataBaseItemList.get(oldItemPosition).getId() == argumentList.get(newItemPosition).getId();
            }

            @Override
            public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
                bindableAssignment oldItem = dataBaseItemList.get(oldItemPosition);
                bindableAssignment newItem = argumentList.get(newItemPosition);
                // Change this to apply your object
                return oldItem.getId() == newItem.getId()
                        && oldItem.getName().equals(newItem.getName())
                        && (oldItem.getDesc() != null && newItem.getDesc() != null) && oldItem.getDesc().equals(newItem.getDesc())
                        && oldItem.getClassId() == newItem.getClassId()
                        && oldItem.getDueTime() == newItem.getDueTime();
            }
        });
        dataBaseItemList = argumentList;
        result.dispatchUpdatesTo(this);
    }
    Log.d("dataBindingAdapter", "Changing data with " + dataBaseItemList.size() + " elements");
}
私有列表数据库itemlist;
公共无效集合项(最终列表){
if(dataBaseItemList==null){
dataBaseItemList=argumentList;
notifyItemRangeChanged(0,dataBaseItemList.size());
}否则{
DiffUtil.diffesult result=DiffUtil.calculateDiff(新的DiffUtil.Callback(){
@凌驾
public int getOldListSize(){
返回dataBaseItemList.size();
}
@凌驾
public int getNewListSize(){
返回argumentList.size();
}
@凌驾
公共布尔值areItemsTheSame(int-oldItemPosition,int-newItemPosition){
返回dataBaseItemList.get(oldItemPosition).getId()==argumentList.get(newItemPosition).getId();
}
@凌驾
公共布尔值是相同的内容(int oldItemPosition,int newItemPosition){
BindableSignment oldItem=dataBaseItemList.get(oldItemPosition);
BindableSignment newItem=argumentList.get(newItemPosition);
//更改此选项以应用对象
返回oldItem.getId()==newItem.getId()
&&oldItem.getName().equals(newItem.getName())
&&(oldItem.getDesc()!=null和&newItem.getDesc()!=null)和&oldItem.getDesc().equals(newItem.getDesc())
&&oldItem.getClassId()==newItem.getClassId()
&&oldItem.getDueTime()==newItem.getDueTime();
}
});
dataBaseItemList=argumentList;
结果。dispatchUpdatesTo(本);
}
Log.d(“dataBindingAdapter”,“使用“+dataBaseItemList.size()+”元素”更改数据”);
}

希望它对你有用。

我正在我的回收设备中使用它

private List<bindableAssignment> dataBaseItemList;

public void setItems(final List<bindableAssignment> argumentList) {
    if (dataBaseItemList == null) {
        dataBaseItemList = argumentList;
        notifyItemRangeChanged(0, dataBaseItemList.size());
    } else {
        DiffUtil.DiffResult result = DiffUtil.calculateDiff(new DiffUtil.Callback() {
            @Override
            public int getOldListSize() {
                return dataBaseItemList.size();
            }

            @Override
            public int getNewListSize() {
                return argumentList.size();
            }

            @Override
            public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
                return dataBaseItemList.get(oldItemPosition).getId() == argumentList.get(newItemPosition).getId();
            }

            @Override
            public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
                bindableAssignment oldItem = dataBaseItemList.get(oldItemPosition);
                bindableAssignment newItem = argumentList.get(newItemPosition);
                // Change this to apply your object
                return oldItem.getId() == newItem.getId()
                        && oldItem.getName().equals(newItem.getName())
                        && (oldItem.getDesc() != null && newItem.getDesc() != null) && oldItem.getDesc().equals(newItem.getDesc())
                        && oldItem.getClassId() == newItem.getClassId()
                        && oldItem.getDueTime() == newItem.getDueTime();
            }
        });
        dataBaseItemList = argumentList;
        result.dispatchUpdatesTo(this);
    }
    Log.d("dataBindingAdapter", "Changing data with " + dataBaseItemList.size() + " elements");
}
私有列表数据库itemlist;
公共无效集合项(最终列表){
if(dataBaseItemList==null){
dataBaseItemList=argumentList;
notifyItemRangeChanged(0,dataBaseItemList.size());
}否则{
DiffUtil.diffesult result=DiffUtil.calculateDiff(新的DiffUtil.Callback(){
@凌驾
public int getOldListSize(){
返回dataBaseItemList.size();
}
@凌驾
public int getNewListSize(){
返回argumentList.size();
}
@凌驾
公共布尔值areItemsTheSame(int-oldItemPosition,int-newItemPosition){
返回dataBaseItemList.get(oldItemPosition).getId()==argumentList.get(newItemPosition).getId();
}
@凌驾
公共布尔值是相同的内容(int oldItemPosition,int newItemPosition){
BindableSignment oldItem=dataBaseItemList.get(oldItemPosition);
BindableSignment newItem=argumentList.get(newItemPosition);
//更改此选项以应用对象
返回oldItem.getId()==newItem.getId()
&&oldItem.getName().equals(newItem.getName())
&&(oldItem.getDesc()!=null和&newItem.getDesc()!=null)和&oldItem.getDesc().equals(newItem.getDesc())
&&oldItem.getClassId()==newItem.getClassId()
&&oldItem.getDueTime()==newItem.getDueTime();
}
});
dataBaseItemList=argumentList;
结果。dispatchUpdatesTo(本);
}
Log.d(“dataBindingAdapter”,“使用“+dataBaseItemList.size()+”元素”更改数据”);
}

希望它对您有效。

我在其他地方更改recycleView。您应该回答自己的问题。我在其他地方更改recycleView。您应该回答自己的问题。