MVC

创建IView包

public interface IView {
    void showprogress();
    void hideprogress();
    void onOk(String json);
    void onError();
}

创建Model包

public class Model {

        public void getdata(String url, final MyOkhttpCallback myOkhttpCallback){
                OkHttpClient client = new OkHttpClient.Builder()
                        .connectTimeout(60*1000, TimeUnit.MILLISECONDS)
                        .writeTimeout(60*1000, TimeUnit.MILLISECONDS)
                        .readTimeout(60*1000, TimeUnit.MILLISECONDS)
                        .build();
                Request request = new Request.Builder()
                        .get()
                        .url(url)
                        .build();
                client.newCall(request).enqueue(new Callback() {
                        @Override
                        public void onFailure(Call call, IOException e) {
                                String message = e.getMessage();
                                try {
                                        Thread.sleep(1000);
                                } catch (InterruptedException ex) {
                                        ex.printStackTrace();
                                }
                                if (myOkhttpCallback!=null){
                                        myOkhttpCallback.onError(message);
                                }

                        }

                        @Override
                        public void onResponse(Call call, Response response) throws IOException {
                                String string = response.body().string();
                                if (myOkhttpCallback!=null){
                                        myOkhttpCallback.onOk(string);
                                }
                        }
                });
        }

}

创建controller包

public class controller {
    private IView iView;
    private Model model;

    public controller(IView iView) {
        this.iView = iView;
        model=new Model();
    }
    public void getFooddata(){
        iView.showprogress();
        model.getdata("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1", new MyOkhttpCallback() {
            @Override
            public void onOk(String json) {
                iView.onOk(json);
                iView.hideprogress();
            }

            @Override
            public void onError(String message) {
                    iView.onError();
                    iView.hideprogress();
            }
        });
    }
}

接口回调

public interface MyOkhttpCallback {
    void onOk(String json);
    void onError(String message);
}

MainActivity两种写法

第一种

public class Main2Activity extends AppCompatActivity implements Iview1 {
    private ProgressDialog dialog;
    private TextView ll1;
    private controller1 controller1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        ll1 = (TextView) findViewById(R.id.ll1);
        controller1=new controller1(this);
        controller1.getFooddata();
    }

    @Override
    public void showprogress() {
        dialog = new ProgressDialog(Main2Activity.this);
        dialog.setTitle("正在下载");
        dialog.show();
    }

    @Override
    public void hideprogress() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                dialog.dismiss();
            }
        });
    }

    @Override
    public void onOk(final String json) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                ll1.setText(json);
            }
        });
    }

    @Override
    public void onError() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                AlertDialog.Builder builder = new AlertDialog.Builder(Main2Activity.this);
                builder.setTitle("请检查网络");
                builder.show();
            }
        });

    }
}

第二种

先创建一个base包

在base包里写一个BaseActivity继承IView里面重写里面的方法除了获取数据成功外

public abstract class BaseActivity extends AppCompatActivity implements IView {
    private ProgressDialog dialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(layoutId());
        initView();
        initData();
    }

    protected abstract void initData();

    protected abstract void initView();

    protected abstract int layoutId();


    @Override
    public void showprogress() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                dialog=new ProgressDialog(BaseActivity.this);
                dialog.setTitle("正在加载中");
                dialog.show();
            }
        });
    }

    @Override
    public void hideprogress() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                dialog.dismiss();
            }
        });

    }

    @Override
    public void onError() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(BaseActivity.this, "请检查网络", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

在MainActivity里继承在BaseActivity

public class MainActivity extends BaseActivity {
    private TextView te;
    private controller controller;
    @Override
    protected void initData() {
        controller=new controller(this);
        controller.getFooddata();
    }

    @Override
    protected void initView() {
        te=findViewById(R.id.te);
    }

    @Override
    protected int layoutId() {
        return R.layout.activity_main;
    }

    @Override
    public void onOk(final String json) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                te.setText(json);
            }
        });
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值