Skip to content

Repository files navigation

RecyclerViewDiffutils

https://www.youtube.com/watch?v=PAOcL1W05Eg

  • MyDiffUtilsCallBack.java
publicclassMyDiffUtilsCallBackextendsDiffUtil.Callback {
privateList<String> oldList;
privateList<String> newList;
publicMyDiffUtilsCallBack(List<String> oldList, List<String> newList) {
this.oldList = oldList;
this.newList = newList;
}
@OverridepublicintgetOldListSize() {
returnoldList.size();
}
@OverridepublicintgetNewListSize() {
returnnewList.size();
}
@OverridepublicbooleanareItemsTheSame(intoldItemPosition, intnewItemPosition) {
returnoldItemPosition == newItemPosition;
}
@OverridepublicbooleanareContentsTheSame(intoldItemPosition, intnewItemPosition) {
returnoldList.get(oldItemPosition) == newList.get(newItemPosition);
}
}
  • MyAdapter.java
publicclassMyAdapterextendsRecyclerView.Adapter<MyAdapter.MyHolder> {
privateList<String> data;
...
publicvoidinsertData(List<String> d){
MyDiffUtilsCallBackdiffUtilsCallBack = newMyDiffUtilsCallBack(d, data);
DiffUtil.DiffResultdiffResult = DiffUtil.calculateDiff(diffUtilsCallBack);
data.addAll(d);
diffResult.dispatchUpdatesTo(this);
}
publicvoidupdateData(List<String> d){
MyDiffUtilsCallBackdiffUtilsCallBack = newMyDiffUtilsCallBack(data, d);
DiffUtil.DiffResultdiffResult = DiffUtil.calculateDiff(diffUtilsCallBack);
data.clear();
data.addAll(d);
diffResult.dispatchUpdatesTo(this);
}
}
  • MainActivity.java
publicclassMainActivityextendsAppCompatActivity {
List<String> data = newArrayList<>();
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnInsert.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(Viewv) {
List<String> newList = newArrayList<>();
for (inti=0; i<3; i++)
newList.add(UUID.randomUUID().toString());
myAdapter.insertData(newList);
rvData.smoothScrollToPosition(myAdapter.getItemCount() - 1);
}
});
btnUpdate.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(Viewv) {
List<String> updateList = newArrayList<>();
for (inti=0; i<3; i++)
updateList.add(UUID.randomUUID().toString());
myAdapter.updateData(updateList);
}
});
}
}

FullCode MainActivity & MyAdapter & MyDiffUtilsCallBack


Copyright 2020 M. Fadli Zein

Releases

Packages

Contributors

Languages