我正在开发一个微博客平台,我需要在其中使用HttpGet填充从Django服务器获得的Post(用户定义的带字段的类)页面。
在客户端(Android)中,我使用GSON将服务器的响应解析为Post类型。所以我要求服务器一个接一个地发送Post,以便在解析之后将它们中的每一个添加到Posts列表中,然后在添加所有Post之后最终通知列表适配器数据集中的更改。
但是在最初加载应用程序时出现问题,页面必须填充来自服务器的10个最新帖子。所以我想到了一种相当脏的方式将10个httpget请求一个接一个地发送到服务器到服务器。代码看起来像这样
public void populateTimeline(){
Thread populate = new Thread(){
public void run(){
Looper.prepare();
InputStream data = getData(serviceURL); //gets a post from server
if(data!= null){
String result = responsetoString(data); //turns response to String
progressDialog.show();
Posts post = toPostfromGson(result); //Parses string to Post Object
}
Looper.loop();
}
};
populate.start();
}
我想在循环中执行10次以获得我需要的10个帖子。但是在Django中我知道(如果我错了,请纠正我)没有办法将最后发送的Post的索引保存到客户端,因此无法在下一个HttpGet请求中发送'next'Post。所以我没有想法。
我觉得有效地做到这一点有更好的方法。任何帮助将不胜感激。
答案 0 :(得分:0)
作为对Dmitry评论的详细说明,请考虑在Django应用中添加一个返回多个(序列化)帖子的视图。如下所示:
def get_posts(request, count=10):
posts = Post.objects.all().order_by("-date")[:count]
posts_in_gson = serialize_to_gson(posts)
return HttpResponse(posts_in_gson)
您的客户端代码需要处理帖子列表以及单个帖子。 (或者只是使用count=1
进行后续调用。)