TesterHome android app 编写历程(二)

本文介绍在TesterHome应用中如何使用Retrofit进行网络请求与数据存储,包括添加Retrofit库、创建POJO类、配置接口以及实现接口以获取数据并更新界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

上一节TesterHome android app 编写历程(一)我们将主要的界面给完成了,今天的话主要是会出现处理一些数据的的请求以及存储

正文

这里主要用到的话是Retrofit 进行网络请求,想详细了解Retrofit的用法的话可以参照Retrofit开发指南讲的相当详细了。
那么我们就按照那份文档进行操作吧。

首先添加Retrofit库到项目中,我们使用gradle配置下:

compile 'com.squareup.retrofit:retrofit:1.9.0'

再来我们需要创建一个POJO或模型类,Testerhome返回的数据都是json的格式,所以我们需要将其转换成Java Bean类型来进行存储。有一个很好的工具节省了我们新建类的工作。
jsonschema2pojo通过直接输入后台返回的json的数据,生成对应的模型类。

/**
* id : 3339
* title : TesterHome 与 fir.im 设立月度最佳文章奖金 [千元悬赏]
* created_at : 2015-09-15T21:23:19.217+08:00
* updated_at : 2015-09-15T23:38:25.218+08:00
* replied_at : 2015-09-15T23:38:25.206+08:00
* replies_count : 4
* node_name : 活动沙龙
* node_id : 24
* last_reply_user_id : 1011
* last_reply_user_login : doctorq
* user : {“id”:104,”login”:”seveniruby”,”name”:”思寒”,”avatar_url”:”/user/large_avatar/104.jpg”}
* deleted : false
* abilities : {“update”:false,”destroy”:false}
*/
我们以这个帖子为例,当然这个不是json的格式类型,我们就勉强脑补为json个数,那么使用jsonschema2pojo的话就会自动生成topic以及user两个类型,并且包含其中的getter以及setter等。

再下来是配置我们的接口用来管理像GET,POST…等请求的URL,这是一个服务类
我们请求的URL是https://testerhome.com/api/v3/topics.json 后面会带有各类的参数来满足你的一些请求,目前的话我们需要获取到精华帖子,热门帖子等等,所以我们需要加上参数类型type,所以看下我们的接口实现吧。

public interface TopicsService {
    @GET("/topics.json")
    void getTopicsByType(@Query("type") String type,@Query("offset") int offset,
                      Callback<Topics> callback);

    @GET("/topics.json")
    void getTopicsByType(@Query("type") String type,@Query("offset") int offset,@Query("node_id") int node_id,
                         Callback<Topics> callback);

}

完成了接口 下来就是完成接口的实现了。

 TesterHomeApi.getInstance().getTopicsService().getTopicsByType("recent",offset,19,new Callback<Topics>() {
                @Override
                public void success(Topics topics, Response response) {
                    topicAdapter.setItems(topics.getTopics());
                    Toast.makeText(getActivity(),"已经是最新消息了",Toast.LENGTH_SHORT).show();

                }
                @Override
                public void failure(RetrofitError error) {
                    Log.e("demo", "failure() called with: " + "error = [" + error + "]"
                            + error.getUrl());
                    Toast.makeText(getActivity(), "获取数据失败", Toast.LENGTH_SHORT).show();
                }
            });

这里的topicAdpter实际上就是我们加载数据的一个适配器了。使用的是RecyclerView.Adapter,关于RecylerView的话以及topicAdpter下次在讲吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值