【发布时间】:2018-02-02 15:06:14
【问题描述】:
我的 TeamDao 中有这个
@Query("select * from teams where id = :teamId")
Flowable<Team> getRivals(int teamId);
我是这样订阅的
teamRepository.getRivals(61).
distinctUntilChanged().
observeOn(SchedulerProvider.getInstance().ui()).
subscribeOn(SchedulerProvider.getInstance().computation())
.subscribe(team -> Log.d("HomeActivity", team.getName()));
只要 Team 表的任何行发生任何变化,无论它的 id 是否为 61,我都会看到我的这个订阅者在调用。
我在博客上读到 distinctUntilChanged() 正是用来避免这种情况的。
我的 POJO 团队是这样的
@Entity(tableName = "teams",
foreignKeys = {
@ForeignKey
(entity = User.class,
parentColumns = "id",
childColumns = "userId",
onDelete = ForeignKey.CASCADE),
@ForeignKey
(entity = Neighbourhood.class,
parentColumns = "id",
childColumns = "neighbourhoodId"
)})
public class Team {
@PrimaryKey
int id;
private String name;
private String imageUrl;
@Embedded(prefix = "ladder_")
Ladder ladder;
// USE RELATIONS WITH @Relation()
//relations
private int userId;
private int neighbourhoodId;
private int skillLevelId;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public Neighbourhood getNeighbourhood() {
return neighbourhood;
}
public void setNeighbourhood(Neighbourhood neighbourhood) {
this.neighbourhood = neighbourhood;
}
public List<TeamMember> getTeamMemberList() {
return teamMemberList;
}
public void setTeamMemberList(List<TeamMember> teamMemberList) {
this.teamMemberList = teamMemberList;
}
public int getNeighbourhoodId() {
return neighbourhoodId;
}
public void setNeighbourhoodId(int neighbourhoodId) {
this.neighbourhoodId = neighbourhoodId;
}
public int getSkillLevelId() {
return skillLevelId;
}
public void setSkillLevelId(int skillLevelId) {
this.skillLevelId = skillLevelId;
}
public List<Sport> getSports() {
return sports;
}
public void setSports(List<Sport> sportList) {
this.sports = sportList;
}
public Ladder getLadder() {
return ladder;
}
public void setLadder(Ladder ladder) {
this.ladder = ladder;
}
public List<MatchRequest> getMatchRequests() {
return matchRequests;
}
public void setMatchRequests(List<MatchRequest> matchRequests) {
this.matchRequests = matchRequests;
}
}
任何指针?
【问题讨论】:
-
您的
Team类是否正确实现equals? -
好吧。它没有。这也是必需品吗?我将发布我的团队课程
-
@akarnokd 发表您的评论作为答案。你成功了
标签: android rx-java2 rx-android android-room