【问题标题】:How to use the ion library in Android?如何在 Android 中使用 ion 库?
【发布时间】:2015-07-11 10:12:17
【问题描述】:

我正在使用 ion 库从 php Web 服务下载 json 对象响应。 我就是这样用的:

Ion.with(getActivity())
            .load("http://amd.com/loginService.php")
            .progressBar(progressBar).progress(new ProgressCallback() {
        @Override
        public void onProgress(long downloaded, long total) {
            int mProgress = (int) (100 * downloaded / total);
            progressBar.setProgress(mProgress);
        }
    })
            .setMultipartParameter("fb_id", id)
            .setMultipartParameter("fb_token", AccessToken.getCurrentAccessToken().toString())
            .asJsonObject()
            .setCallback(new FutureCallback<JsonObject>() {
                @Override
                public void onCompleted(Exception e, JsonObject result) {
                    if (result == null) {
                        Toast.makeText(getActivity(), "Error", Toast.LENGTH_SHORT).show();
                        progressBar.setVisibility(View.GONE);
                    } else {


                        Log.v("IonResult", result.toString());
                        progressBar.setVisibility(View.GONE);

                    }
                }
            });

现在我想问两个问题:

  1. 如何以良好的方式显示“请稍候”和进度条?当服务器响应完成时,进度条应该出现然后消失。

  2. 如何解析我得到响应的 json?我已经这样记录了我的结果

    Log.v("IonResult", result.toString());

我可以看到响应,但是如何使用它并解析它并获取我想要的项目?

请帮忙,我知道这是一个基本问题,但由于我是 Android 初学者,请帮助我改进。谢谢。

【问题讨论】:

  • 嘿@pana doll,你检查过我的回答,找到更好的方法吗?

标签: android json android-ion


【解决方案1】:

我最近开始使用 Ion,所以我不确定这是否是最好的方法(如果您知道,请在此处发表评论!)。

所以,我使用回调将值返回给另一个类。

public interface ResponseCallback {

    public void onSuccess(String result);

    public void onError(String result);

}

我的代码中的一个例子:

public void getChats(final Context context, final String url,final ResponseCallback responseCallback) {


 Ion.with(context)

        .load(url)
        .asString()
        .setCallback(new FutureCallback<String>() {
            @Override
            public void onCompleted(Exception e, String result) {
                if (e != null) {
                    if (responseCallback != null) {
                        responseCallback.onError(e.toString());
                    }
                    Toast.makeText(context, "Error loading chat list.", Toast.LENGTH_SHORT);
                    return;
                }

                if (responseCallback != null) {
                    responseCallback.onSuccess(result);
                }
            }
        });
}

所以,当我调用 getChats() 时,我实现了 ResponseCallback 方法。我希望它有所帮助,即使我认为有更好的方法来做到这一点。

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    相关资源
    最近更新 更多