MVP注册登录和XListView刷新加载

//model层(接口和类)

public interface ILoginModel {

   void login(String mobile,String password,ILoginPrestenter iLoginPrestenter);

}
package lianxi.bawei.com.mvp_login_regin_zhanshi.login.model;

import android.os.Handler;

import java.io.IOException;

import lianxi.bawei.com.mvp_login_regin_zhanshi.login.api.Constants;
import lianxi.bawei.com.mvp_login_regin_zhanshi.login.presenter.ILoginPrestenter;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

//MVP当中的Model层 : 业务逻辑,网络请求
public class LoginModel implements ILoginModel{
    private Handler handler=new Handler();
    @Override
    public void login(String mobile, String password, final ILoginPrestenter iLoginPrestenter) {
        String url= Constants.LOGIN+"?mobile="+mobile+"&password="+password;

        OkHttpClient okHttpClient=new OkHttpClient();
        Request request=new Request.Builder()
                .get()
                .url(url)
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {//子线程
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                          iLoginPrestenter.onFailed(e.getMessage());
                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                if(response.isSuccessful()){
                    final String result = response.body().string();
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            iLoginPrestenter.onSuccess(result);
                        }
                    });
                }
            }
        });
    }
}
//presenter(接口和类)
package lianxi.bawei.com.mvp_login_regin_zhanshi.login.presenter;

public interface ILoginPrestenter {

    void login(String mobile,String password);

    void onFailed(String msg);
    void onSuccess(Object obj);

    //销毁
    void onDestory();
}
package lianxi.bawei.com.mvp_login_regin_zhanshi.login.presenter;

import android.widget.Toast;

import com.google.gson.Gson;

import lianxi.bawei.com.mvp_login_regin_zhanshi.MainActivity;
import lianxi.bawei.com.mvp_login_regin_zhanshi.login.bean.LoginInfo;
import lianxi.bawei.com.mvp_login_regin_zhanshi.login.model.LoginModel;
import lianxi.bawei.com.mvp_login_regin_zhanshi.login.view.IMainView;

public class LoginPresenter implements ILoginPrestenter{
    private IMainView iMainView;
    private LoginModel loginModel;

    public LoginPresenter(IMainView iMainView) {
        this.iMainView = iMainView;
        loginModel=new LoginModel();
    }

    @Override
    public void login(String mobile, String password) {
        loginModel.login(mobile,password,this);
    }

    @Override
    public void onFailed(String msg) {
        if(iMainView == null){
            return;
        }
        iMainView.onFailed(msg);
    }

    @Override
    public void onSuccess(Object obj) {
        //判空处理
        if(iMainView == null){
            return;
        }
        //解析
        Gson gson=new Gson();
        LoginInfo loginInfo = gson.fromJson(obj.toString(), LoginInfo.class);
        String code = loginInfo.getCode();
        if("0".equals(code)){
            iMainView.onSuccess(loginInfo.getMsg());
        }else{
            iMainView.onFailed(loginInfo.getMsg());
        }
    }

    @Override
    public void onDestory() {

        if(iMainView == null){
            iMainView=null;
        }
    }
}
//view(接口和MainActivity)
package lianxi.bawei.com.mvp_login_regin_zhanshi.login.view;



public interface IMainView {

    void onFailed(String msg);
    void onSuccess(Object obj);
}
package lianxi.bawei.com.mvp_login_regin_zhanshi;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import lianxi.bawei.com.mvp_login_regin_zhanshi.login.presenter.LoginPresenter;
import lianxi.bawei.com.mvp_login_regin_zhanshi.login.view.IMainView;
import lianxi.bawei.com.mvp_login_regin_zhanshi.login.view.LoginActivity;

public class MainActivity extends AppCompatActivity implements IMainView{

    private EditText etMobile;
    private EditText etPassword;
    private LoginPresenter loginPresenter;

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

        //找控件
        etMobile = (EditText) findViewById(R.id.etMobile);
        etPassword = (EditText) findViewById(R.id.etPassword);

        //创建Presenter对象
        loginPresenter=new LoginPresenter(this);
    }
    //登录点击事件
    public void btnLogin(View view){
        //获取输入框的数据
        String mobile = etMobile.getText().toString().trim();
        String password = etPassword.getText().toString().trim();
        //调用loginpresenter方法
        loginPresenter.login(mobile,password);
    }
    //注册点击事件
    public void btnResiger(View view){
        Intent intent=new Intent(MainActivity.this, LoginActivity.class);
        startActivity(intent);
    }

    @Override
    public void onFailed(String msg) {

        Toast.makeText(this,"失败信息:"+msg,Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onSuccess(Object obj) {
        //显示操作
        Toast.makeText(this,"操作成功:"+obj.toString(),Toast.LENGTH_SHORT).show();
        //跳转主页Activity
        Intent intent=new Intent(MainActivity.this,SecActivity.class);
        startActivity(intent);
        finish();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        //解绑,防止内存泄漏
        loginPresenter.onDestory();
    }
}
//注册ResigerActivity
package lianxi.bawei.com.mvp_login_regin_zhanshi.login.view;

import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.google.gson.Gson;

import java.io.IOException;

import lianxi.bawei.com.mvp_login_regin_zhanshi.MainActivity;
import lianxi.bawei.com.mvp_login_regin_zhanshi.R;
import lianxi.bawei.com.mvp_login_regin_zhanshi.login.api.Constants;
import lianxi.bawei.com.mvp_login_regin_zhanshi.login.bean.SuperClass;
import lianxi.bawei.com.mvp_login_regin_zhanshi.login.presenter.ILoginPrestenter;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class LoginActivity extends AppCompatActivity {
    private EditText tel;
    private EditText pass;
    private Handler handler=new Handler();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        tel = (EditText) findViewById(R.id.tel);
        pass = (EditText) findViewById(R.id.pass);
    }
    public void btnResiger1(View view) {
        String a = tel.getText().toString();
        String b = pass.getText().toString();
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder()
                .get()
                .url("http://120.27.23.105/user/reg?mobile=" + a + "&password=" + b)
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {

            private String str;

            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                str = response.body().string();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        Gson gson=new Gson();
                        SuperClass superClass = gson.fromJson(str, SuperClass.class);
                        String code = superClass.getCode();
                        if(code.equals("1")){
                            Toast.makeText(LoginActivity.this,superClass.getMsg(),Toast.LENGTH_SHORT).show();
                            return;
                        }else{
                            Toast.makeText(LoginActivity.this,"注册成功",Toast.LENGTH_SHORT).show();
                            finish();
                        }

                    }
                });
            }
        });


    }
}

//contants(存放接口)
package lianxi.bawei.com.mvp_login_regin_zhanshi.login.api;

public class Constants {
    //http://120.27.23.105/user/login
    //http://120.27.23.105/user/reg

    public static final String HOST_HOME="http://120.27.23.105";

    public static final String LOGIN=HOST_HOME+"/user/login";
    public static final String RESIGER=HOST_HOME+"/user/login";
}
//bean包里解析获得的数据
....
//utils
package lianxi.bawei.com.mvp_login_regin_zhanshi.show.utils;

import android.util.Log;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class NetWorkUtils {
    public String getJsonByHttpurlConnection(String jsonUrl){
         URL url=null;
         HttpURLConnection urlConnection=null;
        String data="";

        try {
            url=new URL(jsonUrl);
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setConnectTimeout(5000);
            urlConnection.setReadTimeout(5000);
            int responseCode = urlConnection.getResponseCode();
            if(responseCode==200){
                InputStream inputStream = urlConnection.getInputStream();
                byte[] b=new byte[1024];
                int len=0;
                while((len=inputStream.read(b))!=-1){
                    String str=new String(b,0,len);
                    data+=str;
                }
                Log.d("TAG",data);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return data;
    }

}
//图片Myapp
package lianxi.bawei.com.mvp_login_regin_zhanshi.show.app;

import android.app.Application;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

public class MyApp extends Application{

    @Override
    public void onCreate() {
        super.onCreate();

        ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();
        ImageLoader.getInstance().init(build);
    }
}
//适配器
package lianxi.bawei.com.mvp_login_regin_zhanshi.show.adapter1;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

import lianxi.bawei.com.mvp_login_regin_zhanshi.R;
import lianxi.bawei.com.mvp_login_regin_zhanshi.show.bean.GoodsClass;

public class MyAdapter1 extends BaseAdapter {
    private List<GoodsClass.DataBean> list;
    private Context context;

    public MyAdapter1(List<GoodsClass.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }


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

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup viewGroup) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = View.inflate(context, R.layout.list_view_layout, null);
            holder = new ViewHolder();
            holder.imageView = (ImageView) convertView.findViewById(R.id.imageView);
            holder.text01 = (TextView) convertView.findViewById(R.id.text01);
            holder.text02 = (TextView) convertView.findViewById(R.id.text02);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.text01.setText(list.get(position).getTitle());
        holder.text02.setText(list.get(position).getCreatetime());
        ImageLoader.getInstance().displayImage(list.get(position).getImages(),holder.imageView);
        return convertView;
    }

    public class ViewHolder {

        private ImageView imageView;
        private TextView text01,text02;
    }
}
//activity_sec布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_sec"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="lianxi.bawei.com.mvp_login_regin_zhanshi.SecActivity">

    <lianxi.bawei.com.mvp_login_regin_zhanshi.XListView
       android:id="@+id/xlv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       />
</RelativeLayout>
//注册
<uses-permission android:name="android.permission.INTERNET"/>(还需要写加载图片的权限)
//导入的依赖
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.google.code.gson:gson:2.2.4'
compile files('libs/universal-image-loader-1.9.5.jar')
//需要导入XListView的包等
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值