我正在为我的WordPress博客开发一个android应用程序。我很难发现并发帖。因此,首先,我给你一个关于我的愿景:
我想从过去获得帖子,所以我这样做:
获取最大的帖子id(换句话说,最新的帖子id),然后在我的应用程序中获取数据库中的最小帖子id,然后我可以找到获取帖子的确切页码。
因此,我检查了我的wp rest api插件的结果,似乎每个帖子的帖子都会增加2,所以我基于此编写了我的应用程序,但是,现在我查看我博客中的第一篇帖子,实际上没有顺序。
对于一些是+1,对于其他一些是+3和。那么,主要的问题是,帖子ID的变化顺序是什么?有没有办法手动设置帖子Id?(一个简单的方法)应该有一个有序的变量,有一个应用程序的音调,它可以保存应用程序数据库中的帖子。
对不起我的语言。
编辑:添加代码
public void GetPostFromNet_LoadMore_firstStep() {
ServiceCall serviceCall = new ServiceCall("mysiteURL");
MyApi myApi = serviceCall.s();
Call<JsonElement> call2 = myApi.loadQuestions("/wp-json/posts?fields=ID,title,type,comment_status,modified_gmt,featured_image&filter[posts_per_page]=1&page=1");
call2.enqueue(new Callback<JsonElement>() {
@Override
public void onResponse(Response<JsonElement> response, Retrofit retrofit) {
try {
LoadMore_DoFirstStep(response);
} catch (Exception ex) {
Toast.makeText(MainActivity.this, ex.toString() + "__call2_somthing happend" + ex.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
ex.printStackTrace();
}
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
Toast.makeText(getApplicationContext(), "onFailure", Toast.LENGTH_SHORT).show();
}
});
}
public void LoadMore_DoFirstStep(Response<JsonElement> response) throws Exception {
ArrayList<obj_sitePosts> postItems = new ArrayList<>();
JsonArray jsonArray = response.body().getAsJsonArray();
if (!isNull(jsonArray) && jsonArray.size() > 0) {
postItems = convertJson_getPosts(jsonArray);
if (!isNull(postItems) && postItems.size() > 0) {
long latest_ID = postItems.get(0).getID();
db_sitePosts db_newPost = new db_sitePosts(getApplicationContext());
long smallest_ID = db_newPost.getAllPost_OrderBy().get(db_newPost.getPostCount() - 1).getID();
long diffID = Math.abs(latest_ID - smallest_ID);
if (diffID > 0) {
int resualt = 0, quotient = 0, remaning = 0;
resualt = (int) Math.floor(diffID / 2);
quotient = (int) Math.ceil(resualt / POST_LOAD_PER_REQUEST);
remaning = resualt % POST_LOAD_PER_REQUEST;
if (quotient > 0) {
if (remaning == 0) {
//call function usign page=quotient+1; andd POST_LOAD_PER_REQUEST
LoadMore_DoSecendStep(quotient + 1, POST_LOAD_PER_REQUEST);
}
if (remaning > 0) {
LoadMore_DoSecendStep(quotient, POST_LOAD_PER_REQUEST);
}
}
long page = diffID / POST_LOAD_PER_REQUEST;
} else {
//it mean site have just one POST!!!
Toast.makeText(getApplicationContext(), "no new Post!!!", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(getApplicationContext(), "no post has been sent Yet!!!", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(getApplicationContext(), "no post has been sent Yet!!!", Toast.LENGTH_SHORT).show();
}
}
GetPostFromNet\\u LoadMore\\u第一步:获取最大的帖子ID。
LoadMore\\u DoFirstStep:查找数据库中存在的最小post id和来自GetPostFromNet\\u LoadMore\\u firstStep的which之间的post数量。
LoadMore\\u Dosecentstep:获取正确的页面