我有一个这样的自定义适配器:
private List<User> items = new ArrayList<>();
private Context context;
public UserSpinnerAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull
List<User> objects) {
super(context, resource, objects);
this.items = objects;
this.context = context;
}
当我想找到从 Web API 获取的对象用户的位置时,public int getPosition(@Nullable User item)
的结果始终为 -1。我认为这是我传递给适配器的项目的原因,不仅与内部的适配器用户列表相同,尽管每件事都相同,但指向另一个内存点。
那么我如何比较两个具有相同属性但实际上是分离的对象呢?
你应该为User
对象实现一个equals
/hashCode
您应该重写所比较对象的equals
/hashCode
方法。您可以通过在班级内按 Alt+Insert
并选择 equals() and hashCode()
来轻松完成。如果您的类有其他自定义类型的字段,例如
public class User {
...
private Location location;
...
}
您还必须为位置实现equals
/hashCode