AsyncTask类插入数据到服务器与接口回调

////////////////2016/04/21/////////////////////

//////////////by XBW///////////////////////////

///////////环境  api22 eclipse /////////////

搞了这么久终于弄好了接口,之前都是一个人在做项目,自己随心所欲的写代码,想怎么写就怎么写,到了团队呢,这接口那接口,各种类,各种枚举,各种内部类,抽象类,单例懒汉,单例饿汉的,也算学了不少东西,

我做的是把数据插入到数据库的一个线程类,继承的AsyncTask类,

按照惯例,先上效果图,

服务器已经获取到修改的数据了,今天主要不是布局,界面有点丑,主要是封装的AsyncTask类,上代码详细介绍

jar包的内容,

AsyncTask_Change.java是继承的AsyncTask类,是主要的类,

Config_mysql.java是配置类,配置的服务器端php返回json的url,

Info_Type.java是数据类型,用的枚举一一列举出来的,

JSONParser是向服务器收发json数据的类,是个工具类吧,

Progress_Dialog是一个系统的插入数据进度环显示,没有自定义布局,所有不需要xml文件,

上代码咯

AsyncTask_Change.java

package com.example.matrix.mysql;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import com.example.matrix.LoginActivity;
import com.example.matrix.mysql.Info_Type.INFOTYPE;
import com.example.matrix.util.ProgressDialogs;

import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;

public class AsyncTask_Change extends AsyncTask<String, String, String> {
    // mysql
    JSONParser jsonParser = new JSONParser();
    private static String url_up = Config_mysql.Get_URLPATH();
    private static String url_s = "";
    private static final String TAG_MESSAGE = "message";
    Config_mysql USERYETEXIST = new Config_mysql();
    Context context;
    ProgressDialog dialog;
    boolean result = false;

    public AsyncTask_Change(Context context) {
        this.context = context;
    }

    @SuppressWarnings("deprecation")
    public Config_mysql Mysql_Change(String ID, String INFO, INFOTYPE TYPE) {
        String id = ID;
        String info = INFO;
        INFOTYPE type = TYPE;
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("user_phone", id));
        switch (type) {
        case brand:
            params.add(new BasicNameValuePair("brand", info));
            url_s = INFOTYPE.brand.getUrl();
            break;
        case logo:
            url_s = INFOTYPE.logo.getUrl();
            params.add(new BasicNameValuePair("logo", info));
            break;
        case platenum:
            url_s = INFOTYPE.platenum.getUrl();
            params.add(new BasicNameValuePair("platenum", info));
            break;
        case enginenum:
            url_s = INFOTYPE.enginenum.getUrl();
            params.add(new BasicNameValuePair("enginenum", info));
            break;
        case carlevel:
            url_s = INFOTYPE.carlevel.getUrl();
            params.add(new BasicNameValuePair("carlevel", info));
            break;
        case colometer:
            url_s = INFOTYPE.colometer.getUrl();
            params.add(new BasicNameValuePair("colometer", info));
            break;
        case enginestate:
            url_s = INFOTYPE.enginestate.getUrl();
            params.add(new BasicNameValuePair("enginestate", info));
            break;
        case shiftstate:
            url_s = INFOTYPE.shiftstate.getUrl();
            params.add(new BasicNameValuePair("shiftstate", info));
            break;
        case light:
            url_s = INFOTYPE.light.getUrl();
            params.add(new BasicNameValuePair("light", info));
            break;
        case oilcount:
            url_s = INFOTYPE.oilcount.getUrl();
            params.add(new BasicNameValuePair("oilcount", info));
            break;
        case order_time:
            url_s = INFOTYPE.order_time.getUrl();
            params.add(new BasicNameValuePair("order_time", info));
            break;
        case gas_station:
            url_s = INFOTYPE.gas_station.getUrl();
            params.add(new BasicNameValuePair("gas_station", info));
            break;
        case gas_type:
            url_s = INFOTYPE.gas_type.getUrl();
            params.add(new BasicNameValuePair("gas_type", info));
            break;
        case gas_num:
            url_s = INFOTYPE.gas_num.getUrl();
            params.add(new BasicNameValuePair("gas_num", info));
            break;
        case user_name:
            url_s = INFOTYPE.user_name.getUrl();
            params.add(new BasicNameValuePair("user_name", info));
            break;
        case user_age:
            url_s = INFOTYPE.user_age.getUrl();
            params.add(new BasicNameValuePair("user_age", info));
            break;
        case user_image_head:
            url_s = INFOTYPE.user_image_head.getUrl();
            params.add(new BasicNameValuePair("user_image_head", info));
            break;
        case user_sex:
            url_s = INFOTYPE.user_sex.getUrl();
            params.add(new BasicNameValuePair("user_sex", info));
            break;
        case user_schoolname:
            url_s = INFOTYPE.user_schoolname.getUrl();
            params.add(new BasicNameValuePair("user_schoolname", info));
            break;
        case user_password:
            url_s = INFOTYPE.user_password.getUrl();
            params.add(new BasicNameValuePair("user_password", info));
            break;
        case user_bg:
            url_s = INFOTYPE.user_bg.getUrl();
            params.add(new BasicNameValuePair("user_bg", info));
            break;
        case user_sign:
            url_s = INFOTYPE.user_sign.getUrl();
            params.add(new BasicNameValuePair("user_sign", info));
            break;
        case user_signtime:
            url_s = INFOTYPE.user_signtime.getUrl();
            params.add(new BasicNameValuePair("user_signtime", info));
            break;
        }
        try {
            JSONObject json = jsonParser.makeHttpRequest(url_up + url_s,
                    "POST", params);
            String message = json.getString(TAG_MESSAGE);
            if (message.equals("NONET")) {
                USERYETEXIST.Set_isNetWork(false);
            } else {
                USERYETEXIST.Set_httpjsonsuccess(message.equals("YES"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return USERYETEXIST;
    }
    protected void onPreExecute() {
        super.onPreExecute();
        dialog = Progress_Dialog.CreateProgressDialog(context);
        dialog.show();
    }
    @Override
    protected String doInBackground(String... params) {
        // TODO 自动生成的方法存根
        String ID = params[0];
        String INFO = params[1];
        String TYPE = params[2];
        Config_mysql LOG;
        LOG = Mysql_Change(ID, INFO, STRING_INFOTYPE(TYPE));
        String message;
        if (!LOG.Get_isNetWork()) {
            message = "1";
        } else if (LOG.Get_httpjsonsuccess()) {
            message = "2";
        } else {
            message = "3";
        }
        return message;
    }
/////////////////////////////////////////////////////////////////////////////////////
    public interface MysqlListener {         //回调接口                                     
        public void Success();                                                    
        public void Fail();                                                       
    }                                                                             
    private MysqlListener mysqlListener=null;                                     
    public void setMysqlListener(MysqlListener mysqlListener) {                   
        this.mysqlListener = mysqlListener;                                        
    }                                                                             
                                                                          
/////////////////////////////////////////////////////////////////////////////////////
    @SuppressLint("ShowToast")
    protected void onPostExecute(String message) {
        dialog.dismiss();
        if(mysqlListener!=null){
            if (message.equals("2")) {
                mysqlListener.Success();
            } else {
                mysqlListener.Fail();
            }
        }
        if (message.equals("1")) {
            Toast.makeText(context, "网络连接失败", 8000).show();
        } else if (message.equals("2")) {
            Toast.makeText(context, "修改成功", 8000).show();
        } else {
            Toast.makeText(context, "修改失败", 8000).show();
        }
    }

    public INFOTYPE STRING_INFOTYPE(String TYPE) {
        INFOTYPE type = null;
        switch (TYPE) {
        case "brand":
            type = INFOTYPE.brand;
            break;
        case "logo":
            type = INFOTYPE.logo;
            break;
        case "platenum":
            type = INFOTYPE.platenum;
            break;
        case "enginenum":
            type = INFOTYPE.enginenum;
            break;
        case "carlevel":
            type = INFOTYPE.carlevel;
            break;
        case "colometer":
            type = INFOTYPE.colometer;
            break;
        case "enginestate":
            type = INFOTYPE.enginestate;
            break;
        case "shiftstate":
            type = INFOTYPE.shiftstate;
            break;
        case "light":
            type = INFOTYPE.light;
            break;
        case "oilcount":
            type = INFOTYPE.oilcount;
            break;
        case "order_time":
            type = INFOTYPE.order_time;
            break;
        case "gas_station":
            type = INFOTYPE.gas_station;
            break;
        case "gas_type":
            type = INFOTYPE.gas_type;
            break;
        case "gas_num":
            type = INFOTYPE.gas_num;
            break;
        case "user_name":
            type = INFOTYPE.user_name;
            break;
        case "user_image_head":
            type = INFOTYPE.user_image_head;
            break;
        case "user_age":
            type = INFOTYPE.user_age;
            break;
        case "user_schoolname":
            type = INFOTYPE.user_schoolname;
            break;
        case "user_sex":
            type = INFOTYPE.user_sex;
            break;
        case "user_password":
            type = INFOTYPE.user_password;
            break;
        case "user_bg":
            type = INFOTYPE.user_bg;
            break;
        case "user_sign":
            type = INFOTYPE.user_sign;
            break;
        case "user_signtime":
            type = INFOTYPE.user_signtime;
            break;
        }
        return type;
    }

    public static String INFOTYPE_STRING(INFOTYPE TYPE) {
        String type = null;
        switch (TYPE) {
        case brand:
            type = "brand";
            break;
        case logo:
            type = "logo";
            break;
        case platenum:
            type = "platenum";
            break;
        case enginenum:
            type = "enginenum";
            break;
        case carlevel:
            type = "carlevel";
            break;
        case colometer:
            type = "colometer";
            break;
        case enginestate:
            type = "enginestate";
            break;
        case shiftstate:
            type = "shiftstate";
            break;
        case light:
            type = "light";
            break;
        case oilcount:
            type = "oilcount";
            break;
        case order_time:
            type = "order_time";
            break;
        case gas_station:
            type = "gas_station";
            break;
        case gas_type:
            type = "gas_type";
            break;
        case gas_num:
            type = "gas_num";
            break;
        case user_name:
            type = "user_name";
            break;
        case user_age:
            type = "user_age";
            break;
        case user_schoolname:
            type = "user_schoolname";
            break;
        case user_sex:
            type = "user_sex";
            break;
        case user_image_head:
            type = "user_image_head";
            break;
        case user_password:
            type = "user_password";
            break;
        case user_bg:
            type = "user_bg";
            break;
        case user_sign:
            type = "user_sign";
            break;
        case user_signtime:
            type = "user_signtime";
            break;
        }
        return type;
    }
}

 

Config_mysql.java

package com.example.matrix.mysql;

public class Config_mysql {
    
    public static String URLPATH="http://000.000.000.000/mysql/";
    public boolean httpjsonsuccess=false;
    public boolean isNetWork=true;//http请求是否成功
    public void Set_httpjsonsuccess(boolean httpjsonsuccess)
    {
        this.httpjsonsuccess=httpjsonsuccess;
    }
    public boolean Get_httpjsonsuccess()
    {
        return httpjsonsuccess;
    }
    public void Set_isNetWork(boolean isNetWork)
    {
        this.isNetWork=isNetWork;
    }
    public boolean Get_isNetWork()
    {
        return isNetWork;
    }
    public void Set_URLPATH(String URLPATH)
    {
        this.URLPATH=URLPATH;
    }
    public static String Get_URLPATH()
    {
        return URLPATH;
    }
    

}

 

Info_Type.java

package com.example.matrix.mysql;

public class Info_Type {
    
    public enum INFOTYPE{
        
        //keep保养
        brand {public String getUrl(){return "keep/change_brand.php";}public INFOTYPE getType(){return brand;}public String getName(){return "brand";}},

        logo {public String getUrl(){return "keep/change_logo.php";}public INFOTYPE getType(){return logo;}public String getName(){return "logo";}},

        platenum {public String getUrl(){return "keep/change_platenum.php";}public INFOTYPE getType(){return platenum;}public String getName(){return "platenum";}},

        enginenum {public String getUrl(){return "keep/change_enginenum.php";}public INFOTYPE getType(){return enginenum;}public String getName(){return "enginenum";}},

        carlevel {public String getUrl(){return "keep/change_carlevel.php";}public INFOTYPE getType(){return carlevel;}public String getName(){return "carlevel";}},

        colometer {public String getUrl(){return "keep/change_colometer.php";}public INFOTYPE getType(){return colometer;}public String getName(){return "colometer";}},
        
        enginestate {public String getUrl(){return "keep/change_enginestate.php";}public INFOTYPE getType(){return enginestate;}public String getName(){return "enginestate";}},
        
        shiftstate {public String getUrl(){return "keep/change_shiftstate.php";}public INFOTYPE getType(){return shiftstate;}public String getName(){return "shiftstate";}},
        
        light {public String getUrl(){return "keep/change_light.php";}public INFOTYPE getType(){return light;}public String getName(){return "light";}},

        oilcount {public String getUrl(){return "keep/change_oilcount.php";}public INFOTYPE getType(){return oilcount;}public String getName(){return "oilcount";}},
        
        //order预约
        order_time {public String getUrl(){return "order/change_time.php";}public INFOTYPE getType(){return order_time;}public String getName(){return "order_time";}},
        
        gas_station {public String getUrl(){return "order/change_gasstation.php";}public INFOTYPE getType(){return gas_station;}public String getName(){return "gas_station";}},
        
        gas_type {public String getUrl(){return "order/change_gastype.php";}public INFOTYPE getType(){return gas_type;}public String getName(){return "gas_type";}},
        
        gas_num {public String getUrl(){return "order/change_gasnum.php";}public INFOTYPE getType(){return gas_num;}public String getName(){return "gas_num";}},
        
        //用户
        user_name {public String getUrl(){return "user/change_nickname.php";}public INFOTYPE getType(){return user_name;}public String getName(){return "user_name";}},
        
        user_password {public String getUrl(){return "user/change_password.php";}public INFOTYPE getType(){return user_password;}public String getName(){return "user_password";}},
        
        user_image_head {public String getUrl(){return "user/change_head.php";}public INFOTYPE getType(){return user_image_head;}public String getName(){return "user_image_head";}},
        
        user_age {public String getUrl(){return "user/change_age.php";}public INFOTYPE getType(){return user_age;}public String getName(){return "user_age";}},
        
        user_sex {public String getUrl(){return "user/change_sex.php";}public INFOTYPE getType(){return user_sex;}public String getName(){return "user_sex";}},
        
        user_schoolname {public String getUrl(){return "user/change_schoolname.php";}public INFOTYPE getType(){return user_schoolname;}public String getName(){return "user_schoolname";}},
        
        user_sign {public String getUrl(){return "user/change_sign.php";}public INFOTYPE getType(){return user_sign;}public String getName(){return "user_sign";}},
        
        user_signtime {public String getUrl(){return "user/change_signtime.php";}public INFOTYPE getType(){return user_signtime;}public String getName(){return "user_signtime";}},
        
        user_bg {public String getUrl(){return "user/change_bg.php";}public INFOTYPE getType(){return user_bg;}public String getName(){return "user_bg";}};
        public abstract INFOTYPE getType();
        public abstract String getName();
        public abstract String getUrl();
    }

}

JSONParser.java

package com.example.matrix.mysql;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

@SuppressWarnings("deprecation")
public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
    public JSONParser() {
    }
    @SuppressWarnings("deprecation")
    public JSONObject makeHttpRequest(String url, String method,
            List<NameValuePair> params) {

        try {    
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();                
            
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "UTF-8"));
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
            json = "{\"success\":\"2\",\"message\":NONET}"; //网络连接失败返回json
            Log.d("json", json.toString());
        }
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }
        return jObj;

    }
}

Progress_Dialog.java

package com.example.matrix.mysql;

import android.app.ProgressDialog;
import android.content.Context;

public class Progress_Dialog {
    
    @SuppressWarnings("deprecation")
    public static ProgressDialog CreateProgressDialog(Context context)
    {
        ProgressDialog dialog = new ProgressDialog(context); 
        dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
        dialog.setMessage("数据加载中……"); 
        dialog.setCancelable(false); 
        return dialog;
    }

}


代码已全部贴出,demo正在写,需要请留言……