zoukankan      html  css  js  c++  java
  • 2014.4.2项目的接口定义的理解

    private void getData() {
            // TODO Auto-generated method stub
            
            
            new WaitProgress(new WaitProgress.WaitProgressCallBack() {
                
                @Override
                public void execute() {
                    // TODO Auto-generated method stub
                    TrainSearchOrderResponse response =PraseXML.getTrainOrderList(result);
                    
                    list=response.getTrainOrders();
                    adapter=new TrainOrderListAdapter(TrainOrderListActivity.this, list);
                    //adapter.GetSelectinfo(str_cc, str_cfz, str_ddz);
                    listview=(ListView) findViewById(R.id.listview);
                    Log.d("ssss", list.size()+"size11111111");
                    listview.setAdapter(adapter);
                    listview.setOnItemClickListener(new Onitemlistener());
                    if(response!=null){
                        countview.setText(response.getTotalCount().toString());
                    }
                }
            }, new WaitProgress.DataCallBack() {
                
                @Override
                public void execute() {
                    RequestData r = new RequestDataImpl();
                    TrainQueryOrderRequest request = new TrainQueryOrderRequest();
                    Ve_yhb ve_yhb =  Ve_yhb.getVe_yhb();
                    request.setStart("0");
                    request.setCount("10");
                    request.setKhid(ve_yhb.getId());
                    result=r.searchTrainOrder(request.toXML());
                }
            }).waitDialog(TrainOrderListActivity.this);
            
        }

    getdata是另外一个类里面进行数据请求时调用,一个程序有多个不同请求数据页面,那么execute里面执行的代码就是不一样的,但是线程处理的上是一样的,为了提高代码的共用性,那么线程处理部分代码是可以共用的部分,在waitprogress类里面写两个接口,方便在其他类(例如在getdata的那个类,需要进行请求数据),即在其他类可以完整实现你所写的那个类的方法。

    package cn.vetech.android.framework.core.commons;
    
    
    
    
    import cn.vetech.android.framework.core.commons.AlertViewDiaologInterface.DoCloseEvent;
    import cn.vetech.android.framework.core.data.RequestData;
    import cn.vetech.android.framework.core.httpclient.HttpUtils;
    
    import android.content.Context;
    import android.os.Handler;
    import android.os.Message;
    
    /**
     * 请求网络数据时的异步调用框架
     * @author 李盼
     *
     */
    public class WaitProgress {
        BaseProgressDialog progressDialog;
        Handler handler;
        WaitProgressCallBack progressCallBack;
        DataCallBack dataCallBack; 
        DoCloseEvent closeEvent = null;
        
        RequestData data ;
        boolean isClosed = false;
        
        boolean checklogin = true;
        
        
        /**
         * 1,设置请求数据时的回调函数
         * 2,设置数据返回后处理数据的回调函数
         * @param progressCallBack
         * @param dataCallBack
         */
        public WaitProgress(WaitProgressCallBack progressCallBack,DataCallBack dataCallBack){
            this.progressCallBack = progressCallBack;
            this.dataCallBack = dataCallBack;
        }
        public WaitProgress(WaitProgressCallBack progressCallBack,DataCallBack dataCallBack,DoCloseEvent closeEvent){
            this.progressCallBack = progressCallBack;
            this.dataCallBack = dataCallBack;
            this.closeEvent = closeEvent;
        }
        public WaitProgress(WaitProgressCallBack progressCallBack,DataCallBack dataCallBack,boolean checklogin){
            this.progressCallBack = progressCallBack;
            this.dataCallBack = dataCallBack;
            this.checklogin = checklogin;
        }
        
    
        /**
         * 启动框架,弹出等待层,并开启线程进行网络数据访问
         * @param context
         */
        public void waitDialog(Context context,String message) {
            boolean isconnection = HttpUtils.isNetworkAvailable(context);
            
            
                if(isconnection){
        
                    progressDialog = new ProgressDialog(context);
                    
                    //放回数据后进行数据处理,
                    handler = new Handler() {
                        public void handleMessage(Message msg) {
                            progressCallBack.execute();
                        };
                    };
                    
                    //开启线程进行网络访问,网络访问在dataCallBack.execute()回调函数中进型
                    final Thread thread = new Thread() {
                        @Override
                        public void run() {  
                            dataCallBack.execute();
                            //返回数据后关闭弹出层
                            //向handler发送消息通知数据已经返回
                            if (!isClosed) {
                                Message msg = new Message();
                                handler.sendMessage(msg);
                            }
                            progressDialog.dismissDialog();
                        }
                    };
        
                    thread.start();
                    
                    //关闭弹出层的同时杀掉网络访问进程
                    progressDialog.alertProgressDialog(message,new AlertViewDiaologInterface.StopNetWork() {
                        @Override
                        public void execute() {
                            isClosed = true;
                            thread.interrupt();
                        }
                    });
                    
                    
                }else{
                    DialogUtils.alert(context, "未找到可用的网络,请检查网络连接!");
                }
            
        }
        /**
         * 启动框架,弹出等待层,并开启线程进行网络数据访问
         * @param context
         */
        public void waitDialog(Context context) {
            boolean isconnection = HttpUtils.isNetworkAvailable(context);
            
                if(isconnection){
                    if("1".equals(SysConfiguration.getTITLEFLAG())){
                        progressDialog = new ProgressDialog_BTLH(context);
                    }else{
                        progressDialog = new ProgressDialog(context);
                    }
                    
                    
                    //放回数据后进行数据处理,
                    handler = new Handler() {
                        public void handleMessage(Message msg) {
                            progressCallBack.execute();
                        };
                    };
                    
                    //开启线程进行网络访问,网络访问在dataCallBack.execute()回调函数中进型
                    final Thread thread = new Thread() {
                        @Override 
                        public void run() {  
                            dataCallBack.execute();
                            //返回数据后关闭弹出层
                            //向handler发送消息通知数据已经返回
                            if (!isClosed) {
                                Message msg = new Message();
                                handler.sendMessage(msg);
                            }
                            progressDialog.dismissDialog();
                        }
                    };
                    
                    thread.start();
                    
                    //关闭弹出层的同时杀掉网络访问进程nbvc`13rty
                    
                    progressDialog.alertProgressDialog("",new AlertViewDiaologInterface.StopNetWork() {
                        @Override
                        public void execute() {
                            isClosed = true;
                            thread.interrupt();
                        }
                    },closeEvent);
                    
                    
                    
                }else{
                    DialogUtils.alert(context, "未找到可用的网络,请检查网络连接!");
                }
        }
    
        
    
        /**
         * 处理返回数据的回调函数
         *
         */
        public interface WaitProgressCallBack {
            public void execute( );
        }
        /**
         * 请求数据回调函数
         *
         */
        public interface DataCallBack {
            public void execute( );
        }
    }
  • 相关阅读:
    Nodejs-内置核心模块&npm包管理工具

    python 内置函数
    序列化和反序列化(json 和pickle)dumps 为序列化, json为反序列化
    迭代器iter()
    生成器 yield
    装饰器的解释说明
    面向过程中的局部变量(global)
    函数的参数设定
    集合的基本操作
  • 原文地址:https://www.cnblogs.com/androidxufeng/p/3640436.html
Copyright © 2011-2022 走看看