class Student {
private String name;
private int num;
public Student(String name, int num) {
this.name = name;
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
class MyAdapter extends RecyclerView.Adapter {
private ArrayList<Student> data;
ArrayList<Student> getData() {
return data;
}
void setData(ArrayList<Student> data) {
this.data = new ArrayList<>(data);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(RecyclerViewActivity.this).inflate(R.layout.itemview, null);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
MyViewHolder myViewHolder = (MyViewHolder) holder;
Student student = data.get(position);
myViewHolder.tv.setText(student.getNum() + "." + student.getName());
}
@Override
public int getItemCount() {
return data.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView tv;
MyViewHolder(View itemView) {
super(itemView);
tv = (TextView) itemView.findViewById(R.id.item_tv);
}
}
}
private void initData() {
students = new ArrayList<>();
Student s1 = new Student("John", 1);
Student s2 = new Student("Curry", 2);
Student s3 = new Student("Rose", 3);
Student s4 = new Student("Dante", 4);
Student s5 = new Student("Lunar", 5);
students.add(s1);
students.add(s2);
students.add(s3);
students.add(s4);
students.add(s5);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler_view);
initData();
recyclerView = (RecyclerView) findViewById(R.id.rv);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new MyAdapter();
adapter.setData(students);
recyclerView.setAdapter(adapter);
}
class MyAdapter extends RecyclerView.Adapter {
private ArrayList<Student> data;
ArrayList<Student> getData() {
return data;
}
void setData(ArrayList<Student> data) {
this.data = new ArrayList<>(data);
}
// 省略部分代码
......
}
public void change(View view) {
students.set(1, new Student("Fndroid", 2));
students.add(new Student("Jason", 8));
Student s2 = students.get(2);
students.remove(2);
students.add(s2);
ArrayList<Student> old_students = adapter.getData();
DiffUtil.DiffResult result = DiffUtil.calculateDiff(new MyCallback(old_students, students), true);
adapter.setData(students);
result.dispatchUpdatesTo(adapter);
}
private class MyCallback extends DiffUtil.Callback {
private ArrayList<Student> old_students, new_students;
MyCallback(ArrayList<Student> data, ArrayList<Student> students) {
this.old_students = data;
this.new_students = students;
}
@Override
public int getOldListSize() {
return old_students.size();
}
@Override
public int getNewListSize() {
return new_students.size();
}
// 判断Item是否已经存在
@Override
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
return old_students.get(oldItemPosition).getNum() == new_students.get(newItemPosition).getNum();
}
// 如果Item已经存在则会调用此方法,判断Item的内容是否一致
@Override
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
return old_students.get(oldItemPosition).getName().equals(new_students.get(newItemPosition).getName());
}
}
@Nullable
@Override
public Object getChangePayload(int oldItemPosition, int newItemPosition) {
Student newStudent = newStudents.get(newItemPosition);
Bundle diffBundle = new Bundle();
diffBundle.putString(NAME_KEY, newStudent.getName());
return diffBundle;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List payloads) {}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List payloads) {
if (payloads.isEmpty()) {
onBindViewHolder(holder, position);
} else {
MyViewHolder myViewHolder = (MyViewHolder) holder;
Bundle bundle = (Bundle) payloads.get(0);
if (bundle.getString(NAME_KEY) != null) {
myViewHolder.name.setText(bundle.getString(NAME_KEY));
myViewHolder.name.setTextColor(Color.BLUE);
}
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有