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的包等
MVP注册登录和XListView刷新加载相关推荐
- WordPress自适应白天暗夜高颜值无刷新加载首页支持三种布局 v2.4
一款基于WordPress开发的高颜值的自适应主题,支持白天与黑夜模式.首页支持三种布局:博客风格,cms风格,企业风格 主题特性 支持白天与暗黑模式 全局无刷新加载 支持博客与CMS布局 内置WP优 ...
- WordPress自适应白天暗夜无刷新加载三种布局模板源码
一款基于Wordpress开发的高颜值的自适应主题,支持白天与黑夜模式.首页支持三种布局:博客风格,cms风格,企业风格 主题特性: 支持白天与暗黑模式 全局无刷新加载 支持博客与CMS布局 内置WP ...
- 用户配置文件服务登录失败。无法加载用户配置文件
昨天电脑正常关闭,可是今天打开时提示"用户配置文件服务登录失败.无法加载用户配置文件"在使用F8 最后一次正确配置后,还是无效,最后只有重新创建账号,问题解决了,我也从网络上找到了 ...
- Android教你打造独一无二的刷新加载框架
2019独角兽企业重金招聘Python工程师标准>>> 其实早在去年七月,群里小伙伴就有让我共享这个.但我当时绝的技术不纯熟.代码有bug什么的.没有写出来.现在感觉整理的差不多了. ...
- android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题...
android 在自定义的listview(有刷新加载项)列表中,数据过少时,当刷新时,加载项也会显示,这是很头疼的一个问题,查阅了一些资料,总结了一个比较不错的方法: 原来代码: 1 @Overr ...
- emlog通过pjax实现无刷新加载网页--完美解决cnzz统计和javascript失效问题
想要更详细了解pjax,需要查看官网 或者看本站文章:jQuery.pjax.js:使用AJAX和pushState无刷新加载网页(官网教程中文翻译) 效果看本站,音乐无刷新播放,代码高亮和复制js加 ...
- Bootstrap tab页签刷新加载不显示,只有点击其他标签后第一个才显示
Bootstrap tab页签刷新加载不显示,只有点击其他标签后第一个才显示 解决方法: 在tab-content里面的tab-pane中添加active <!-- 导航区 --> < ...
- 解决bootstrap table刷新加载时白色闪屏问题
根据项目需要,把bootstrap table都改成了蓝色的风格,但是今天测试的时候发现了一个小的问题.每次刷新加载的数据的时候,总是会有一闪而过的白屏.很影响交互效果,这个时候,需要找到bootst ...
- 一行代码实现全站pjax无刷新加载
之前也没有研究过pjax,但是没事走访别人博客时看到不少经过pjax的网站,响应速度很快,今天一篇<一行代码实现全站pjax无刷新加载>测试后发发现效果确实不错,但是由于我是老的媒体范板子 ...
最新文章
- 美国防承包商博思艾伦泄露五角大楼相关敏感文件
- as3绘制抛物线(二)
- Linux下自动分割Nginx日志文件(三)-----Logrotate
- Android开发精要1--Android系统架构
- How HBO’s Silicon Valley built “Not Hotdog” with mobile TensorFlow, Keras React Native
- JZOJ 5898. 【NOIP2018模拟10.6】距离统计
- Boost概念的function_requires() 检查库在预期的情况下会捕获错误
- Delphi 的绘图功能[10] - TFONT 类
- 那天删库跑路后,在牢里写的MySQL数据恢复大法……
- 线性表的Java实现--链式存储(双向链表)
- mysql 时间 sql_MySQL sql语句获取当前日期|时间|时间戳
- Java堆溢出错误:java.lang.OutOfMemoryError: Java heap space
- aspnet ajax 1.0中的according控件
- Java反射初探 ——“当类也学会照镜子”
- 解决csdn登陆后复制的方法
- MCMC算法大统一: Involutive MCMC
- 计算机无法读取手机内存,手机sd卡无法读取,教您解决手机sd卡无法读取的方法...
- 简单易学的机器学习算法——Mean Shift聚类算法
- 简书计算机组成原理知识点梳理,指令:计算机的语言(MIPS) --计算机组成原理(2)...
- PySpark之电商广告推荐(1)
热门文章
- 全民远程办公的第一天,为什么你的视频会议卡住了?
- Mac安装steam提示Steam needs to be online to update. Please confirm your network connection and try again
- 都 要 悠 着 点 呀~~
- Two Arrays And Swaps
- 捉奸游戏之后,中年危机游戏也来了。。
- (大五人格分析)开放型人格的优势和职业发展
- DBA运维福音:10分钟,一行命令安装Oracle数据库
- mysql定时任务,把7天的数据存到历史表,再删除7天前的数据
- IT软件创业之 -- 电脑设备买过来都是钱,卖出去都是废铁
- 微信小程序入门开发教程