Android------------举例说明接口回调
来源:互联网 发布:手机网络卡是怎么回事 编辑:程序博客网 时间:2024/06/05 11:06
1.首先定义一个接口,里面写好方法:
public interface NetDataCallback { void callback(String str); void err(int errcode,String errMsg);}
2.把定义好的接口类作为参数放到一个工具类中(这里的工具类是Okhttp网络请求框架)
把接口定义的两个小方法分别写入到工具类中请求网络成功和失败的大方法里面,然后在小方法内写对应的参数
:
public class HttpUtils { public void getdata(String url, final NetDataCallback netDataCallback) { //初始化一个 OkHttpClient 并且设置连接和读取超时时间 OkHttpClient okhttp = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .build(); //构造一个Request对象 Request request = new Request.Builder().url(url).build(); //通过request的对象去构造得到一个Call对象 Call call = okhttp.newCall(request); //调用的是call.enqueue,将call加入调度队列,然后等待任务执行完成,我们在Callback中即可得到结果。 call.enqueue(new Callback() { //失败的情况 @Override public void onFailure(Call call, IOException e) { Log.e("///////", "onFailure"); netDataCallback.err(500,e.getMessage()); } //成功的情况 @Override public void onResponse(Call call, Response response) throws IOException { String s = response.body().string(); //这是通过Okhttp访问接口返回来的数据。 // Log.e(".............", "" + s); netDataCallback.callback(s); } }); }}
3.在主界面中
初始化工具类,调用工具类中的方法
实现定义的接口类,会重写接口中的方法,从而达到实现网络请求的目的
public class MainActivity extends AppCompatActivity implements NetDataCallback{ private ListView mlv; private HttpUtils httputils; private String urlpath="http://h5test.newaircloud.com/api/getLayouts?sid=xkycs&cid=10024&date="; private ArrayList<News.LayoutsBean> mlist=new ArrayList<>(); private Myadapter md; private Handler hand=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); Gson gson=new Gson(); if (msg.what==1){ News news = gson.fromJson(msg.obj.toString(), News.class); mlist.addAll(news.getLayouts()); md.notifyDataSetChanged(); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mlv=(ListView)findViewById(R.id.list_view) ; initdata(); md=new Myadapter(this,mlist); mlv.setAdapter(md); } //初始化工具类并调用工具类中的方法 private void initdata() { httputils=new HttpUtils(); httputils.getdata(urlpath,this); } //实现接口,重写的两个方法 //成功的情况 @Override public void callback(String str) { // String s = response.body().string(); //这是通过Okhttp访问接口返回来的数据。 Log.e(".............", "" + str); Message msg=new Message(); msg.what=1; msg.obj=str; hand.sendMessage(msg); } //失败的情况 @Override public void err(int errcode, String errMsg) { }}
阅读全文
0 0
- Android------------举例说明接口回调
- Android Activity生命周期 举例说明
- Android Activity生命周期 举例说明
- android 接口 接口回调
- android 接口回调
- Android 接口回调
- android 接口回调
- Android-接口回调
- Android接口回调
- Android 回调接口
- Android接口回调
- android 接口回调
- Android 回调接口
- Android接口回调
- Android 接口回调
- Android接口回调
- android接口回调
- 举例说明android中ImageView的用法
- TCP连接 保持 保活
- Linux Command Line and....ch25(使用MySQL)
- 使用eclipse创建Struts2项目的一些小问题
- ROS-从rosbag中提取图像(带时间戳)
- 单词查找之Trie树
- Android------------举例说明接口回调
- Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)
- Spring autowire 总结和例子
- 嵌入式硬件系列
- solr 从数据库导入数据
- java double long
- 自定义view实现联系人快速检索
- 小程序报错信息合集
- 初识HTML5(一)