Android 登录 注册 订单

http

public class HttpConfig {
   public static String login_url = "https://www.zhaoapi.cn/user/login";
   public static String reg_url = "https://www.zhaoapi.cn/user/reg";
   public static String good_url = "https://www.zhaoapi.cn/quarter/getJokes";

}
/**
 * 网络请求成功失败的接口
 * <p>
 * 判断OKHttp请求是否成功
 * 区分登录是否成功
 */

public interface LoadListener {
   void loadSuccess(String json);//网络请求成功

   void loadError(String error);//失败
}
public class OkHttpUtils {
   //单例模式获取对象
   public static OkHttpUtils okHttpUtils = null;
   private MyHandler myHandler = new MyHandler();
   private final int FAILED = 0;
   private final int SUCCESS = 1;
   private LoadListener loadListener;

   public static OkHttpUtils getInstance() {

      if (okHttpUtils == null) {
         okHttpUtils = new OkHttpUtils();
      }
      return okHttpUtils;
   }

   //封装get请求
   public void okHttpGet(String url) {
      OkHttpClient okHttpClient = new OkHttpClient();
      final Request request = new Request.Builder().url(url).build();
      Call call = okHttpClient.newCall(request);
      call.enqueue(new Callback() {
         @Override
         public void onFailure(Call call, IOException e) {
            Message message = myHandler.obtainMessage();
            message.what = FAILED;
            message.obj = "失败";
            myHandler.sendMessage(message);
         }

         @Override
         public void onResponse(Call call, Response response) throws IOException {
            Message message = myHandler.obtainMessage();
            message.what = SUCCESS;
            message.obj = response.body().string();
            myHandler.sendMessage(message);
         }
      });
   }

   //封装post请求
   public void okHttpPost(String url, User user) {
      OkHttpClient okHttpClient = new OkHttpClient();

      FormBody formBody = new FormBody.Builder().add("mobile", user.getMobile()).add("password", user.getPassword()).build();

      final Request request = new Request.Builder().url(url).post(formBody).build();
      Call call = okHttpClient.newCall(request);
      call.enqueue(new Callback() {
         @Override
         public void onFailure(Call call, IOException e) {
            Message message = myHandler.obtainMessage();
            message.what = FAILED;
            message.obj = "失败";
            myHandler.sendMessage(message);
         }

         @Override
         public void onResponse(Call call, Response response) throws IOException {
            Message message = myHandler.obtainMessage();
            message.what = SUCCESS;
            message.obj = response.body().string();
            myHandler.sendMessage(message);
         }
      });
   }

   //处理子线程
   class MyHandler extends Handler {
      @Override
      public void handleMessage(Message msg) {
         switch (msg.what) {
            case FAILED:
               //当请求网络失败,调用接口里失败的方法
               String error = (String) msg.obj;
               loadListener.loadError(error);
               break;

            case SUCCESS:
               //当请求网络成功,调用接口里成功的方法
               String json = (String) msg.obj;
               loadListener.loadError(json);
               break;
         }
      }
   }

   //提供外部调用得方法,用于设置接口回调
   public void setLoadListener(LoadListener loadListener) {
      this.loadListener = loadListener;
   }
}
model

public class GoodsBean {}
 
 
public interface ILoadModel {
   void showData(String url,LoadModelListener loadModelListener);

   void refresh(String url,LoadModelListener loadModelListener);

   void loadMore(String url,LoadModelListener loadModelListener);
}
public interface ILogin {
   //Model的登录操作
   void login(User user, LoginListener loginListener);
}
public class LoadModelImpl implements ILoadModel {


   @Override
   public void showData(String url, final LoadModelListener loadModelListener) {
      OkHttpUtils instance = OkHttpUtils.getInstance();
      instance.okHttpGet(url);
      instance.setLoadListener(new LoadListener() {
         @Override
         public void loadSuccess(String json) {
            //成功
            loadModelListener.loadModelSucess(json);
         }

         @Override
         public void loadError(String error) {
            loadModelListener.loadModelError(error);
         }
      });
   }

   @Override
   public void refresh(String url, LoadModelListener loadModelListener) {
      OkHttpUtils instance = OkHttpUtils.getInstance();
      instance.okHttpGet(url);
      instance.setLoadListener(new LoadListener() {
         @Override
         public void loadSuccess(String json) {
            //成功
//          loadModelListener.loadModelSucess(json);
         }

         @Override
         public void loadError(String error) {
//          loadModelListener.loadModelError(error);
         }
      });
   }

   @Override
   public void loadMore(String url, LoadModelListener loadModelListener) {

   }
}
public interface LoadModelListener {
   void loadModelSucess(String json);

   void loadModelError(String error);
}
public class LoginImpl implements ILogin {
   @Override
   public void login(User user, final LoginListener loginListener) {
      //拿着手机号和密码去请求网络验证
      OkHttpUtils okHttpUtils = OkHttpUtils.getInstance();
//    okHttpUtils.okHttpPost(HttpConfig.login_url, user);
      okHttpUtils.okHttpGet(HttpConfig.login_url+"?mobile="+user.getMobile()+"&password="+user.getPassword());
      //监听
      okHttpUtils.setLoadListener(new LoadListener() {
         @Override
         public void loadSuccess(String json) {
            //判断code
            try {
               JSONObject object = new JSONObject(json);
               String code = object.getString("code");
               if (code.equals("0")){
                  loginListener.loginSuccess(json);
               }else {
                  loginListener.loginError("登录失败");
               }
            } catch (JSONException e) {

            }
         }

         @Override
         public void loadError(String error) {
            //网络请求失败,肯定登录失败
            loginListener.loginError(error);
         }
      });
   }
}
public interface LoginListener {
   //登录成功的监听
   void loginSuccess(String json);

   //登录失败的监听
   void loginError(String json);
}
public class User {}
presenter
 
 
public interface IPresenter {
   //登陆
   void presenterLogin(ILogin iLogin, IView iView);
   //显示数据

   void presenterShowData(Context context,ILoadModel iLoadModel, GoodView goodView);
}
public class PresenterImpl implements IPresenter {
   private static final String TAG = "PresenterImpl";
   @Override
   public void presenterLogin(ILogin iLogin, final IView iView) {

      Log.d(TAG, "presenterLogin() returned: " + iView.getMobile()+"==="+iView.getPassword());

      //登陆
      iLogin.login(new User(iView.getMobile(), iView.getPassword()), new LoginListener() {
         @Override
         public void loginSuccess(String json) {
            //登陆成功
            iView.jump();
         }

         @Override
         public void loginError(String json) {
            //登陆失败
            iView.showError();
         }
      });
   }

   //将数据显示到listview
   @Override
   public void presenterShowData(final Context context, ILoadModel iLoadModel, final GoodView goodView) {
      iLoadModel.showData(HttpConfig.good_url + "?source=android&appVersion=100&page=1", new LoadModelListener() {
         @Override
         public void loadModelSucess(String json) {
            Gson gson = new Gson();
            GoodsBean goodsBean = gson.fromJson(json, GoodsBean.class);
            goodView.showDataToView(context, goodsBean.getData());
         }

         @Override
         public void loadModelError(String error) {

         }
      });
   }
}
view
 
 
public class GoodsActivity extends AppCompatActivity implements GoodView {

   private ListView listView;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_goods);

      listView = findViewById(R.id.listview);

   }

   @Override
   public void showDataToView(Context context, List<GoodsBean.DataBean> data) {

      MyAdapter myAdapter = new MyAdapter(context, data);
      listView.setAdapter(myAdapter);

   }
}
public interface GoodView {
   //设置视图
   void showDataToView(Context context,List<GoodsBean.DataBean> data);
}
public interface IView {
   String getMobile();

   String getPassword();

   void jump();

   void showError();

}
public class MainActivity extends AppCompatActivity implements IView, View.OnClickListener {

   private EditText mobile;
   private EditText password;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      //初始化节目
      initViews();
   }

   private void initViews() {
      mobile = findViewById(R.id.mobile);
      password = findViewById(R.id.password);
      Button login = findViewById(R.id.login);
      Button reg = findViewById(R.id.reg);
      login.setOnClickListener(this);
      reg.setOnClickListener(this);
   }

   @Override
   public String getMobile() {
      return mobile.getText().toString();
   }

   @Override
   public String getPassword() {
      return password.getText().toString();
   }

   @Override
   public void jump() {
      startActivity(new Intent(MainActivity.this, GoodsActivity.class));
   }

   @Override
   public void showError() {
      Toast.makeText(MainActivity.this, "登陆失败", Toast.LENGTH_SHORT).show();
   }


   @Override
   public void onClick(View v) {
      switch (v.getId()) {
         case R.id.login:
            PresenterImpl presenter = new PresenterImpl();
            presenter.presenterLogin(new LoginImpl(),this);
            break;

         case R.id.reg:

            break;
      }
   }
}
public class MyAdapter extends BaseAdapter {
   private final Context context;
   private final List<GoodsBean.DataBean> list;

   public MyAdapter(Context context, List<GoodsBean.DataBean> data) {
      this.context = context;
      this.list = data;
   }

   @Override
   public int getCount() {
      return list.size();
   }

   @Override
   public Object getItem(int position) {
      return null;
   }

   @Override
   public long getItemId(int position) {
      return 0;
   }

   @Override
   public View getView(int position, View convertView, ViewGroup parent) {
      TextView textView = new TextView(context);
      textView.setText(list.get(position).getCreateTime());
      return textView;
   }
}
activity_goods
 
 
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.gjl.zhoukao22.view.GoodsActivity">

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></ListView>

</LinearLayout>
activity_main
 
 
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.gjl.zhoukao22.view.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="登录"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="0.75dp"
        android:background="#999999"/>

    <EditText
        android:id="@+id/mobile"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="登录"/>

        <Button
            android:id="@+id/reg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="注册"/>
    </LinearLayout>

</LinearLayout>
依赖
 
 
compile 'com.github.bumptech.glide:glide:3.5.2'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.squareup.okhttp3:okhttp:3.4.1'


猜你喜欢

转载自blog.csdn.net/lmy_xback/article/details/79099671