//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的包等

												

MVP注册登录和XListView刷新加载相关推荐

  1. WordPress自适应白天暗夜高颜值无刷新加载首页支持三种布局 v2.4

    一款基于WordPress开发的高颜值的自适应主题,支持白天与黑夜模式.首页支持三种布局:博客风格,cms风格,企业风格 主题特性 支持白天与暗黑模式 全局无刷新加载 支持博客与CMS布局 内置WP优 ...

  2. WordPress自适应白天暗夜无刷新加载三种布局模板源码

    一款基于Wordpress开发的高颜值的自适应主题,支持白天与黑夜模式.首页支持三种布局:博客风格,cms风格,企业风格 主题特性: 支持白天与暗黑模式 全局无刷新加载 支持博客与CMS布局 内置WP ...

  3. 用户配置文件服务登录失败。无法加载用户配置文件

    昨天电脑正常关闭,可是今天打开时提示"用户配置文件服务登录失败.无法加载用户配置文件"在使用F8 最后一次正确配置后,还是无效,最后只有重新创建账号,问题解决了,我也从网络上找到了 ...

  4. Android教你打造独一无二的刷新加载框架

    2019独角兽企业重金招聘Python工程师标准>>> 其实早在去年七月,群里小伙伴就有让我共享这个.但我当时绝的技术不纯熟.代码有bug什么的.没有写出来.现在感觉整理的差不多了. ...

  5. android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题...

    android  在自定义的listview(有刷新加载项)列表中,数据过少时,当刷新时,加载项也会显示,这是很头疼的一个问题,查阅了一些资料,总结了一个比较不错的方法: 原来代码: 1 @Overr ...

  6. emlog通过pjax实现无刷新加载网页--完美解决cnzz统计和javascript失效问题

    想要更详细了解pjax,需要查看官网 或者看本站文章:jQuery.pjax.js:使用AJAX和pushState无刷新加载网页(官网教程中文翻译) 效果看本站,音乐无刷新播放,代码高亮和复制js加 ...

  7. Bootstrap tab页签刷新加载不显示,只有点击其他标签后第一个才显示

    Bootstrap tab页签刷新加载不显示,只有点击其他标签后第一个才显示 解决方法: 在tab-content里面的tab-pane中添加active <!-- 导航区 --> < ...

  8. 解决bootstrap table刷新加载时白色闪屏问题

    根据项目需要,把bootstrap table都改成了蓝色的风格,但是今天测试的时候发现了一个小的问题.每次刷新加载的数据的时候,总是会有一闪而过的白屏.很影响交互效果,这个时候,需要找到bootst ...

  9. 一行代码实现全站pjax无刷新加载

    之前也没有研究过pjax,但是没事走访别人博客时看到不少经过pjax的网站,响应速度很快,今天一篇<一行代码实现全站pjax无刷新加载>测试后发发现效果确实不错,但是由于我是老的媒体范板子 ...

最新文章

  1. 美国防承包商博思艾伦泄露五角大楼相关敏感文件
  2. as3绘制抛物线(二)
  3. Linux下自动分割Nginx日志文件(三)-----Logrotate
  4. Android开发精要1--Android系统架构
  5. How HBO’s Silicon Valley built “Not Hotdog” with mobile TensorFlow, Keras React Native
  6. JZOJ 5898. 【NOIP2018模拟10.6】距离统计
  7. Boost概念的function_requires() 检查库在预期的情况下会捕获错误
  8. Delphi 的绘图功能[10] - TFONT 类
  9. 那天删库跑路后,在牢里写的MySQL数据恢复大法……
  10. 线性表的Java实现--链式存储(双向链表)
  11. mysql 时间 sql_MySQL sql语句获取当前日期|时间|时间戳
  12. Java堆溢出错误:java.lang.OutOfMemoryError: Java heap space
  13. aspnet ajax 1.0中的according控件
  14. Java反射初探 ——“当类也学会照镜子”
  15. 解决csdn登陆后复制的方法
  16. MCMC算法大统一: Involutive MCMC
  17. 计算机无法读取手机内存,手机sd卡无法读取,教您解决手机sd卡无法读取的方法...
  18. 简单易学的机器学习算法——Mean Shift聚类算法
  19. 简书计算机组成原理知识点梳理,指令:计算机的语言(MIPS) --计算机组成原理(2)...
  20. PySpark之电商广告推荐(1)

热门文章

  1. 全民远程办公的第一天,为什么你的视频会议卡住了?
  2. Mac安装steam提示Steam needs to be online to update. Please confirm your network connection and try again
  3. 都 要 悠 着 点 呀~~
  4. Two Arrays And Swaps
  5. 捉奸游戏之后,中年危机游戏也来了。。
  6. (大五人格分析)开放型人格的优势和职业发展
  7. DBA运维福音:10分钟,一行命令安装Oracle数据库
  8. mysql定时任务,把7天的数据存到历史表,再删除7天前的数据
  9. IT软件创业之 -- 电脑设备买过来都是钱,卖出去都是废铁
  10. 微信小程序入门开发教程