Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android Retrofit 1.9成功返回ListString

Android Retrofit 1.9成功返回ListString
EN

Stack Overflow用户
提问于 2016-07-26 09:29:48
回答 1查看 188关注 0票数 0

我搜索了类似的问题,但不幸的是,我发现他们真的很困惑,而且我仍然是使用Android和Retrofit的新手。

我这里有一个联系人列表JSON

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://api.androidhive.info/contacts/

然后我想把Retrofit过程处理到另一个类,这样我就可以随时调用它了。我有调用UI的MainActivity和处理成功和失败方法的RetrofitHandler。

这是我的主要活动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MainActivity extends AppCompatActivity{

//note i just simplifiend my code a little

private List<Contacts> contacts;
public String[] itemer;
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    RetrofitHandler retrofitHandler = new RetrofitHandler();

    itemer = retrofitHandler.getContacts(this);

    if (itemer != null) {
        Toast.makeText(MainActivity.this,itemer[0],Toast.LENGTH_SHORT).show();

  }

}

这是我的HandlerClass

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ublic class RetrofitHandler {
public String[] item;
public static final String ROOT_URL = "http://api.androidhive.info";
public List<Contacts> contacts;

public String[] getContacts(final Context context) {
    final ProgressDialog loading = ProgressDialog.show(context, "Fetching Data", "Please wait...", false, false);

    RestAdapter adapter = new RestAdapter.Builder().setEndpoint(ROOT_URL).build();
    ContactsAPI api = adapter.create(ContactsAPI.class);

    api.getContacts(new Callback<Contacts>() {
        @Override
        public void success(Contacts contacts, Response response) {
            loading.dismiss();
            MainActivity update = new MainActivity();
            List<Contact> contactList = contacts.getContacts();


            item = new String[contactList.size()];

            for (int i = 0; i < contactList.size(); i++) {

                item[i] = contactList.get(i).getName();
            }

        }

        @Override
        public void failure(RetrofitError error) {
            Toast.makeText(context, "Error Occured", Toast.LENGTH_LONG).show();
        }

    });
    return item;
}

我的问题是,它在LogCat上运行得很流畅,没有错误。不幸的是,主活动上的Toast不会出现。

EN

回答 1

Stack Overflow用户

发布于 2016-07-30 06:24:28

您的问题是因为请求/响应的异步特性。成功或失败回调在响应时触发,这是以异步方式发生的。所以基本上,在此之前你的方法返回,这意味着你的项目是空的。你必须使用同步机制,或者你必须检查MVP pattern,它为你的问题提供了完美的解决方案。下面是一个使用同步调用的示例(我还没有测试过它,但它应该可以工作)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public List<Contacts> getContacts(){
    RestAdapter adapter = new RestAdapter.Builder().setEndpoint(ROOT_URL).build();
    ContactsAPI api = adapter.create(ContactsAPI.class);
    return api.getContacts();
}

查看此tutorial了解更多信息。我建议你迁移到更新换代2,它比更新换代1要好得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38586075

复制
相关文章
MVVM的数据持久化(二)——ROOM的使用
MVVM框架的搭建(一)——背景 MVVM框架的搭建(二)——项目搭建 MVVM框架的搭建(三)——网络请求 MVVM的数据持久化(一)——ROOM的集成
Demo_Yang
2018/12/07
7550
android之Retrofit使用
Github地址 Retrofit基于okhttp封装的网络请求框架, 网络请求的工作本质上是 OkHttp 完成,而 retrofit 仅负责网络请求接口的封装。
李小白是一只喵
2021/01/14
6740
Android网络访问库 - Retrofit学习(1)基础
Retrofit是一个类型安全的HTTP客户端,支持Android和Java.它是Square公司开源的项目,当前版本2.0。
张云飞Vir
2020/03/16
1K0
Android-Retrofit简介
上一篇文章讲了RxJava,这一篇当然就该讲Retrofit了,参考资料: https://blog.csdn.net/gumufuyun/article/details/83619879
android_薛之涛
2019/08/08
1.9K0
Android RxJava/RxAndroid结合Retrofit使用
概述 RxJava是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。更重要的是:使用RxJava在代码逻辑上会非常简洁明了,尤其是在复杂的逻辑上。告别迷之缩进。 RxAnd
非著名程序员
2018/02/02
1.3K0
Android RxJava/RxAndroid结合Retrofit使用
Android MVP+RxJava+Retrofit (2) RxJava+Retrofit
说道RxJava+Retrofit 的组合 大家基本不陌生,先介绍一下Retrofit Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装,网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装。说白了真正工作的还是OkHttp 。
全栈程序员站长
2022/06/29
7470
Android MVP+RxJava+Retrofit (2) RxJava+Retrofit
Android MVP+RxJava+Retrofit (3) MVP+RxJava+Retrofit
前面说了RxJava 与Retrofit的基本用法,但是没用做优化的处理.本篇先做一个优化处理,然后再结合前面的MVP 设计模式,把这些知识贯穿到一个Demo 之中,方便大家理解.
全栈程序员站长
2021/04/07
1.2K0
Android MVP+RxJava+Retrofit (3) MVP+RxJava+Retrofit
Android OkHttp + Retrofit 使用示例
OkHttp + Retrofit使用示例。从引入依赖,编写接口,到发起网络请求。
AnRFDev
2021/02/01
3K0
Android |《看完不忘系列》之Retrofit
嗨,我是哈利迪~《看完不忘系列》将以从树干到细枝的思路分析一些技术框架,本文将对开源项目Retrofit进行介绍。
Holiday
2020/08/20
8750
Android |《看完不忘系列》之Retrofit
【Android】Retrofit2.0源码解析
Retrofit 前言 使用Retrofit已经一段时间了,这货挺好用的,还很特别,特别是使用接口来定义请求方式,这用法让我对它的源码很是好奇。今天就来看看源码吧... 参靠源码retrofit:2.0.2 基本的用法 首先来简单得实现一次GET请求 定义接口 interface Service { @GET("News") Call<ResponseBody> getNews( @Query("limit") String limit); } 完成一次请求
Gavin-ZYX
2018/05/18
1.1K0
Android网络请求库之Retrofit
介绍 Retrofit是Square公司基于RESTful风格推出的网络框架封装。Retrofit是基于OKHttp的网络请求框架的二次封装,其本质仍是OKHttp。 对比 AndroidAsnyHttp。 基于HTTPClient,作者已经停止维护,Android5.0不再使用HTTPClient,因此不推荐使用。 Volley。 基于HttpUrlConnection,Google官方推出,只适合轻量级网络交互如数据传输小,不适合大文件上传下载场景。 优点 API设计简洁易用。 注解化配置高度解耦。 支
八归少年
2022/06/29
5040
Android Retrofit 高级使用与原理
在 Android 开发中,网络请求是一个极为关键的部分。Retrofit 作为一个强大的网络请求库,能够简化开发流程,提供高效的网络请求能力。本文将深入介绍 Retrofit 的高级使用与原理,帮助读者更全面地理解和应用这一库。
Rouse
2023/08/31
7680
Android Retrofit 高级使用与原理
【Android】RxJava + Retrofit完成网络请求
RxJava + Retrofit 前言 本文基于RxJava、Retrofit的使用,若是对RxJava或Retrofit还不了解的简友可以先了解RxJava、Retrofit的用法再来看这篇文章。 在这片文章之前分别单独介绍过Rxjava以及Retrofit的使用: Android Retrofit 2.0 的使用 Android RxJava的使用(一)基本用法 (以及后面的几篇,就不一一列出了) 使用 在了解了RxJava和Retrofit分别的用法后,RxJava、Retrofit的搭配使
Gavin-ZYX
2018/05/18
1.2K0
Retrofit原理_Retrofit
一:Retrofit是什么? 准确来说,Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装。 原因:网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装 我们先来看看下面这个图:
全栈程序员站长
2022/11/17
7660
Retrofit原理_Retrofit
JDK1.9-数组作为方法参数和返回值
以前的方法中我们学习了方法的参数和返回值,但是使用的都是基本数据类型。那么作为引用类型的数组能否作为 方法的参数进行传递呢,当然是可以的。
cwl_java
2022/11/30
6350
JDK1.9-数组作为方法参数和返回值
androidのretrofit2调用接口
所谓理解,通常不过是误解的总合。——村上春树《斯普特尼克恋人》 安卓调用接口 首先引入依赖 implementation 'com.android.volley:volley:1.1.1' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.1.0' implementation 'com.squareup.okhttp3:loggi
阿超
2022/08/16
4370
点击加载更多

相似问题

Android Retrofit :从Retrofit 1.9迁移到Retrofit 2.0的步骤

20

android - retrofit返回null

16

使用retrofit 1.9上传图像和文本

26

使用Retrofit 1.9填充纺纱机?

33

Android Retrofit响应返回空对象

148
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文