基于volley,返回数据的封装

package com.cyhz.csyj.utils;


import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;


import com.cyhz.csyj.base.AppContext;
import com.cyhz.csyj.others.UiHelper;
import com.cyhz.csyj.toolbox.MsgDispatchCenter;
import com.cyhz.csyj.view.activity.AppStart;
import com.cyhz.csyj.view.activity.BaseActivity;
import com.cyhz.csyj.view.activity.LoginNew;
import com.cyhz.csyj.view.view.NetWorkProgressDialog;
import com.google.gson.Gson;
import com.netroid.Listener;
import com.netroid.NetroidError;


import org.json.JSONObject;


import java.lang.reflect.ParameterizedType;
import java.util.List;


/**
 * Created by liuxiaolong on 14-9-18.
 */
public abstract class ListenerCasingTransmit<T> extends Listener<JSONObject> {


    NetWorkProgressDialog netWorkProgressDialog;
    Context context;
    Class<T> class1;


    public ListenerCasingTransmit(Context context) {
        if (context != null) {
            netWorkProgressDialog = new NetWorkProgressDialog(context);
        }
        this.context = context;
        try {
            class1 = (Class<T>) ((ParameterizedType) getClass()
                    .getGenericSuperclass()).getActualTypeArguments()[0];
        } catch (Exception e) {
            class1 = (Class<T>) Object.class;
        }


    }


    /**
     * 在请求的时候是否显示进度动画。
     *
     * @return
     */
    public boolean isDialogShow() {
        return true;
    }




    @Override
    public void onFinish() {
        super.onFinish();
        if (isDialogShow() && netWorkProgressDialog.isShowing()) {
            netWorkProgressDialog.dismiss();
        }
    }


    @Override
    public void onPreExecute() {
        super.onPreExecute();
        if (isDialogShow()) {
            netWorkProgressDialog.show();
        }
    }


    @Override
    public void onSuccess(JSONObject response) {
        try {
            String code = response.getString("err_no");
            if (code.equals("0")) {
                String data = response.getString("data");
                success(data);
                char ch = data.substring(0, 1).toCharArray()[0];
                if (ch == '{') {
                    success(ParseUtil.parseResultJson(data, class1, new Gson()));
                } else if (ch == '[') {
                    success(ParseUtil.parseResultJsonArray(data, class1));
                } else {
                    logcatFilter("json 返回格式错误:" + code);
                }
                logcatFilter("请求成功:" + data);
            } else {
                logcatFilter("请求错误,错误代码 :" + code);
                failure(code);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    @Override
    public void onError(NetroidError error) {
        super.onError(error);
        error(error.getMessage());
        Log.e("sdjbsjkdbnksb", error.toString());
        // Toast.makeText(context, "网络异常,请检查网络设置!", Toast.LENGTH_SHORT).show();
        logcatFilter("请求失败,错误原因 :" + error.getMessage());
    }


    /**
     * 根据服务器端返回的log打印字段来设置是否显示日志信息。
     *
     * @param content
     */
    public void logcatFilter(String content) {
        try {
            String logCode = AppContext.get().getAppConfig().getAccessInfo().getDebug_log_level();
            if (!TextUtils.isEmpty(logCode)) {
                if (logCode.equals("5")) {
                    Toast.makeText(context, content, Toast.LENGTH_LONG).show();
                }
            }
        } catch (Exception e) {


        }


    }


    public void success(T t) {


    }


    public void success(String result) {


    }


    public void success(List<T> ts) {


    }


    public void failure(String code) {
        Log.e("lxl...log...response1",code);
        if (code.equals("1115")) {
            if (context instanceof BaseActivity) {
                ((BaseActivity) context).showToast("授权码失效!");
                SharedPreferences sharedPreferences = context.getSharedPreferences(AppStart.SETTING_INFOS, 0);
                SharedPreferences.Editor editor = sharedPreferences.edit();
                editor.putInt(LoginNew.REMEMBERPASSWORD, 10);
                editor.commit();
                UiHelper.toLoginNew((BaseActivity) context);
                ((BaseActivity) context).getScreenManager().popAllActivityExceptOne(LoginNew.class);
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            MsgDispatchCenter.closeMQ();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        }
    }


    public void error(String error) {
        if (isDialogShow() && netWorkProgressDialog.isShowing()) {
            netWorkProgressDialog.dismiss();
        }
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值