有个项目当时写的,不是很完善,基本能用
package org.excsoft.g; import java.lang.reflect.ParameterizedType; import org.excsoftj.m.Msg; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Handler; import android.os.Message; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.ResponseInfo; import com.lidroid.xutils.http.callback.RequestCallBack; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class MyRequestCallBack<T> extends RequestCallBack<T>{ boolean showFlag=false; boolean cancelFlag=false; public boolean success=false; public Msg returnMsg=new Msg(); private ProgressDialog pd; private Context context; private Handler mHandler; boolean canCanel=false; java.lang.Class cls; int delayedTime=500; String msg11; //private HttpHandler hddd; public MyRequestCallBack(Context context,boolean canCanel,java.lang.Class cls,String msg11){ super.onStart(); this.context=context; this.canCanel=canCanel; this.cls=cls; this.msg11=msg11; } public MyRequestCallBack(Context context,boolean canCanel,java.lang.Class cls,String msg11,int delayedTime){ super.onStart(); this.context=context; this.canCanel=canCanel; this.cls=cls; this.msg11=msg11; this.delayedTime=delayedTime; } public void onStart() { showFlag=true; cancelFlag=false; Message message=new Message(); message.what=1; mHandler=new Handler() { public void handleMessage(Message msg) { if(showFlag){ pd=ProgressDialog.show(context, "", msg11,true,canCanel); pd.setOnCancelListener(new DialogInterface.OnCancelListener() { public void onCancel(DialogInterface dialog) { cancelFlag=true; } }); } super.handleMessage(msg); } }; mHandler.sendMessageDelayed(message,delayedTime); } public void onSuccess(ResponseInfo<T> responseInfo) { try{ showFlag=false; if(pd!=null){ pd.dismiss(); } mHandler.removeMessages(1); if(!cancelFlag){ final XStream xstream = new XStream(new DomDriver()); xstream.ignoreUnknownElements(); xstream.alias("msg", Msg.class); xstream.alias("item", cls); String res=responseInfo.result+""; if(res.indexOf("flag")>0){ returnMsg=(Msg)xstream.fromXML(res); if(returnMsg.getFlag().equals("1")){ success=true; }else{ final String sm=returnMsg.getSm(); new AlertDialog.Builder(context).setTitle("提示").setMessage(sm).setNegativeButton("确定", null).show(); } }else{ new AlertDialog.Builder(context).setTitle("失败") .setMessage("原因:网络不可用").setNegativeButton("确定", null).show(); } } }catch(Exception e){ new AlertDialog.Builder(context).setTitle("失败") .setMessage("原因:网络不可用").setNegativeButton("确定", null).show(); } } // @Override // public void onLoading(long total, long current, boolean isUploading) { // super.onLoading(total, current, isUploading); // if(cancelFlag&&(hddd!=null)){ // hddd.stop(); // } // } @Override public void onFailure(HttpException error, String msg) { if(pd!=null){ pd.dismiss(); } mHandler.removeMessages(1); if(!cancelFlag){ new AlertDialog.Builder(context).setTitle("失败") .setMessage("原因:网络不可用").setNegativeButton("确定", null).show(); } } }
时间: 2024-11-03 21:23:24