我试图使用Retrofit 2将JSON数据提取到RecyclerView中。我还实现了分页。现在进行测试,我更改了JSON URL,好像每页仅显示5
个项目。可以通过在JSON URL的末尾添加“&page = {PAGE#
”来更改页码(其中PAGE#是从1开始的整数,如果没有提及页码,则默认显示第一页) )。
问题:我已成功将每个页面添加到Recyclerview中。但是,它会将最后一页项目添加两次,有时又添加了3次。
像这样:
它将添加最后几次帖子
我找不到问题。分步调试没有帮助。请帮我。我正在学习这些,所以如果您能帮助我,我将非常感谢。
WPPOST POJO:
public class WPPost {
@SerializedName("code")
@Expose
private String code;
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("guid")
@Expose
private Guid guid;
@SerializedName("title")
@Expose
private Title title;
@SerializedName("content")
@Expose
private Content content;
@SerializedName("post_categories")
@Expose
private List < String > postCategories = null;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Guid getGuid() {
return guid;
}
public void setGuid(Guid guid) {
this.guid = guid;
}
public Title getTitle() {
return title;
}
public void setTitle(Title title) {
this.title = title;
}
public Content getContent() {
return content;
}
public void setContent(Content content) {
this.content = content;
}
public List < String > getPostCategories() {
return postCategories;
}
public void setPostCategories(List < String > postCategories) {
this.postCategories = postCategories;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
型号类:
public class Model {
public int postid;
public String title;
public String content;
public String categoriesnames;
public Model(int mID, String mTitle, String mContent, String mCategorynames) {
this.postid = mID;
this.title = mTitle;
this.content = mContent;
this.categoriesnames = mCategorynames;
}
}
答案 0 :(得分:1)
RecyclerView
的{{1}}方法可能会在短时间内被多次调用,并且您的if语句不能阻止onScrolled
在一次滚动中多次被调用,您可以打印带有您的请求URL的日志消息以进行验证。
因此,您应该通过消除多余的重复请求来解决此问题。例如,使用标志检查getRetrofit()
请求是否正在处理:
getRetrofit
然后,使用此标志来确定是否应触发下一页请求。