gpt4 book ai didi

android - 插入新数据后在 RecyclerView 中保存特定项目的位置

转载 作者:搜寻专家 更新时间:2023-11-01 09:45:07 24 4
gpt4 key购买 nike

我实现了 RecyclerView,它有两个 ViewType。该列表是动态的,当用户向下/向上滚动时,它会添加一些项目。在我的 RecyclerView 中,只有一个项目具有不同的 ViewType(将其视为可扩展列表,一次只有一个项目展开)。

我保存扩展项的位置但是当添加新数据时,这个位置发生了变化,我丢失了扩展项。因为向下/向上滚动时添加的数据,根据新数据的大小更新扩展项不是一个好主意。

要提到的一件事是我想在第一次加载时滚动到展开的项目。所以我想保存位置是最好的选择。 (我猜,但我不确定);

我想知道处理这个问题的有效方法是什么?

最佳答案

http://tutorials.jenkov.com/java-collections/hashcode-equals.html

实现 hashcode 和 equals 方法,使用它获取扩展模型对象的位置。

示例:

public class Employee {
protected long employeeId;
protected String firstName;
protected String lastName;

public boolean equals(Object o){
if(o == null) return false;
if(!(o instanceof) Employee) return false;

Employee other = (Employee) o;
if(this.employeeId != other.employeeId) return false;
if(! this.firstName.equals(other.firstName)) return false;
if(! this.lastName.equals(other.lastName)) return false;

return true;
}

public int hashCode(){
return (int) employeeId;
}
}

// To get the index of expanded item
int expandedItemIndex = EmployeeList.indexOf(expandedEmployeeModel);
recyclerView.scrollToPosition(expandedItemIndex);

关于android - 插入新数据后在 RecyclerView 中保存特定项目的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38450846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com