//先导包
implementation files('libs/universal-image-loader-1.9.5.jar')
implementation 'com.squareup.okhttp3:okhttp:3.9.1' implementation files('libs/gson-2.8.0.jar')//ImagrLoder
package view.bw.com.adapter; import android.app.Application; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; /** * Created by lenovo on 2018/1/5. */ public class ImagrLoder extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration loaderConfiguration = ImageLoaderConfiguration.createDefault(this); ImageLoader.getInstance().init(loaderConfiguration); } }//MyAdpter
package view.bw.com.adapter; 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 view.bw.com.bean.SupperClass; import view.bw.com.weekend3.R; /** * Created by lenovo on 2018/1/5. */ public class MyAdpter extends BaseAdapter{ private List<SupperClass.DataBean> list; private Context context; public MyAdpter(List<SupperClass.DataBean> list, Context context) { this.list = list; this.context = context; } @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) { ViewHolder holderl; if (convertView==null){ holderl = new ViewHolder(); convertView = View.inflate(context, R.layout.item,null); holderl.iv = convertView.findViewById(R.id.iv); holderl.item_tt = convertView.findViewById(R.id.item_tt); convertView.setTag(holderl); }else{ holderl = (ViewHolder) convertView.getTag(); } ImageLoader.getInstance().displayImage(list.get(position).getIcon(),holderl.iv); holderl.item_tt.setText(list.get(position).getAppkey()); return convertView; } class ViewHolder{ ImageView iv; TextView item_tt; } }//ChangLiang
package view.bw.com.bean; /** * Created by lenovo on 2018/1/6. */ public class ChangLiang { public static final String MY_ADDRESS = "http://120.27.23.105/user/"; public static final String LOGIN_URL = MY_ADDRESS+"login"; public static final String REGISTER_URL = MY_ADDRESS+"reg"; }//SupperClass
package view.bw.com.bean; /** * Created by lenovo on 2018/1/6. */ public class SupperClass { /** * msg : 登录成功 * code : 0 * data : {"age":null,"appkey":"df135821bc9a1c51","appsecret":"862F9D3F9CD1B2BE33D6703C5ADE4963","createtime":"2018-01-06T09:25:23","email":null,"fans":null,"follow":null,"gender":null,"icon":null,"latitude":null,"longitude":null,"mobile":"13718993295","money":null,"nickname":null,"password":"8F669074CAF5513351A2DE5CC22AC04C","praiseNum":null,"token":"CC1072092AB66EFAC067940BBBD4E01B","uid":10866,"userId":null,"username":"13718993295"} */ private String msg; private String code; private DataBean data; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public static class DataBean { /** * age : null * appkey : df135821bc9a1c51 * appsecret : 862F9D3F9CD1B2BE33D6703C5ADE4963 * createtime : 2018-01-06T09:25:23 * email : null * fans : null * follow : null * gender : null * icon : null * latitude : null * longitude : null * mobile : 13718993295 * money : null * nickname : null * password : 8F669074CAF5513351A2DE5CC22AC04C * praiseNum : null * token : CC1072092AB66EFAC067940BBBD4E01B * uid : 10866 * userId : null * username : 13718993295 */ private Object age; private String appkey; private String appsecret; private String createtime; private Object email; private Object fans; private Object follow; private Object gender; private String icon; private Object latitude; private Object longitude; private String mobile; private Object money; private Object nickname; private String password; private Object praiseNum; private String token; private int uid; private Object userId; private String username; public Object getAge() { return age; } public void setAge(Object age) { this.age = age; } public String getAppkey() { return appkey; } public void setAppkey(String appkey) { this.appkey = appkey; } public String getAppsecret() { return appsecret; } public void setAppsecret(String appsecret) { this.appsecret = appsecret; } public String getCreatetime() { return createtime; } public void setCreatetime(String createtime) { this.createtime = createtime; } public Object getEmail() { return email; } public void setEmail(Object email) { this.email = email; } public Object getFans() { return fans; } public void setFans(Object fans) { this.fans = fans; } public Object getFollow() { return follow; } public void setFollow(Object follow) { this.follow = follow; } public Object getGender() { return gender; } public void setGender(Object gender) { this.gender = gender; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public Object getLatitude() { return latitude; } public void setLatitude(Object latitude) { this.latitude = latitude; } public Object getLongitude() { return longitude; } public void setLongitude(Object longitude) { this.longitude = longitude; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public Object getMoney() { return money; } public void setMoney(Object money) { this.money = money; } public Object getNickname() { return nickname; } public void setNickname(Object nickname) { this.nickname = nickname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Object getPraiseNum() { return praiseNum; } public void setPraiseNum(Object praiseNum) { this.praiseNum = praiseNum; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public Object getUserId() { return userId; } public void setUserId(Object userId) { this.userId = userId; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } }//SupperClassTwo
package view.bw.com.bean; /** * Created by lenovo on 2018/1/7. */ public class SupperClassTwo { /** * msg : 注册成功 * code : 0 */ private String msg; private String code; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } }
//ILoginModel
package view.bw.com.model; import view.bw.com.persenter.ILoginPersenter; /** * Created by lenovo on 2018/1/6. */ public interface ILoginModel { void login(String mobile, String password, ILoginPersenter iLoginPersenter); }//LoginModel
package view.bw.com.model; import android.os.Handler; import java.io.IOException; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import view.bw.com.bean.ChangLiang; import view.bw.com.persenter.ILoginPersenter; /** * Created by lenovo on 2018/1/6. */ public class LoginModel implements ILoginModel{ private Handler handler = new Handler(); @Override public void login(String mobile, String password, final ILoginPersenter iLoginPersenter) { String url = ChangLiang.LOGIN_URL+"?mobile="+mobile+"&password="+password; OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .get() .url(url) .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { iLoginPersenter.onFailed(e.getMessage()); } }); } @Override public void onResponse(Call call, Response response) throws IOException { final String result = response.body().string(); handler.post(new Runnable() { @Override public void run() { iLoginPersenter.onSuccess(result); } }); } }); } }//ILoginModelTwo
package view.bw.com.model2; import view.bw.com.persenter2.ILoginPersenterTwo; /** * Created by lenovo on 2018/1/7. */ public interface ILoginModelTwo { void login(String mobile, String password, ILoginPersenterTwo iLoginPersenterTwo); }//LoginModelTwo
package view.bw.com.model2; import android.os.Handler; import java.io.IOException; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import view.bw.com.bean.ChangLiang; import view.bw.com.persenter2.ILoginPersenterTwo; /** * Created by lenovo on 2018/1/7. */ public class LoginModelTwo implements ILoginModelTwo { private Handler handler = new Handler(); @Override public void login(String mobile, String password, final ILoginPersenterTwo iLoginPersenterTwo) { String url = ChangLiang.REGISTER_URL+"?mobile="+mobile+"&password="+password; OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .get() .url(url) .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { iLoginPersenterTwo.onFailed(e.getMessage()); } }); } @Override public void onResponse(Call call, Response response) throws IOException { final String result = response.body().string(); handler.post(new Runnable() { @Override public void run() { iLoginPersenterTwo.onSuccess(result); } }); } }); } }//ILoginPersenter
package view.bw.com.persenter; /** * Created by lenovo on 2018/1/6. */ public interface ILoginPersenter { void login(String mobile,String password); void onFailed(String str); void onSuccess(Object o); void onDestory(); }//LoginPersenter
//ILoginPersenterTwopackage view.bw.com.persenter; import com.google.gson.Gson; import view.bw.com.bean.SupperClass; import view.bw.com.model.ILoginModel; import view.bw.com.model.LoginModel; import view.bw.com.weekend3.IMainActivity; /** * Created by lenovo on 2018/1/6. */ public class LoginPersenter implements ILoginPersenter { IMainActivity iMainActivity; ILoginModel loginModel; public LoginPersenter(IMainActivity iMainActivity) { this.iMainActivity = iMainActivity; loginModel = new LoginModel(); } @Override public void login(String mobile, String password) { loginModel.login(mobile,password,this); } @Override public void onFailed(String str) { if (null==iMainActivity){ return; } iMainActivity.onFailed(str); } @Override public void onSuccess(Object o) { if (null==iMainActivity){ return; } String result = o.toString(); Gson g = new Gson(); SupperClass supperClass = g.fromJson(result, SupperClass.class); String code = supperClass.getCode(); if (code.equals("0")){ iMainActivity.onSuccess(result); }else{ iMainActivity.onFailed(supperClass.getMsg()); } } @Override public void onDestory() { if (null!=iMainActivity){ iMainActivity = null; } } }
package view.bw.com.persenter2; /** * Created by lenovo on 2018/1/7. */ public interface ILoginPersenterTwo { void login(String mobile,String password); void onFailed(String str); void onSuccess(Object o); void onDestory(); }//LoginPersenterTow
package view.bw.com.persenter2; import view.bw.com.model2.ILoginModelTwo; import view.bw.com.model2.LoginModelTwo; import view.bw.com.persenter.ILoginPersenter; import view.bw.com.view2.IRegister; /** * Created by lenovo on 2018/1/7. */ public class LoginPersenterTow implements ILoginPersenterTwo { IRegister iRegister; ILoginModelTwo loginModelTwo; public LoginPersenterTow(IRegister iRegister) { this.iRegister = iRegister; loginModelTwo = new LoginModelTwo(); } @Override public void login(String mobile, String password) { loginModelTwo.login(mobile,password,this); } @Override public void onFailed(String str) { if (iRegister==null){ return; } iRegister.onFailed(str); } @Override public void onSuccess(Object o) { if (null==iRegister){ return; } iRegister.onSuccess(o.toString()); } @Override public void onDestory() { if (null!=iRegister){ iRegister=null; } } }//IRegister
package view.bw.com.view2; /** * Created by lenovo on 2018/1/7. */ public interface IRegister { void onFailed(String s); void onSuccess(Object o); }//RegisterActivity
package view.bw.com.view2; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.google.gson.Gson; import okhttp3.RequestBody; import view.bw.com.bean.SupperClassTwo; import view.bw.com.persenter2.ILoginPersenterTwo; import view.bw.com.persenter2.LoginPersenterTow; import view.bw.com.weekend3.MainActivity; import view.bw.com.weekend3.R; public class RegisterActivity extends AppCompatActivity implements IRegister{ /** * 请输入电话号 */ private EditText mEtMobile; /** * 请输入密码 */ private EditText mEtPass; private ILoginPersenterTwo iLoginPersenterTwo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); initView(); initText(); } private void initView() { mEtMobile = (EditText) findViewById(R.id.et_mobile); mEtPass = (EditText) findViewById(R.id.et_pass); } private void initText() { iLoginPersenterTwo = new LoginPersenterTow(this); } public void btn_registerNow(View view) { String mobile = mEtMobile.getText().toString(); String pass = mEtPass.getText().toString(); iLoginPersenterTwo.login(mobile,pass); } @Override public void onFailed(String s) { Toast.makeText(this,s,Toast.LENGTH_SHORT).show(); } @Override public void onSuccess(Object o) { String result = o.toString(); Gson g = new Gson(); SupperClassTwo supperClassTwo = g.fromJson(result, SupperClassTwo.class); String code = supperClassTwo.getCode(); if (code.equals("0")){ Intent intent = new Intent(RegisterActivity.this, MainActivity.class); startActivity(intent); Toast.makeText(this,supperClassTwo.getMsg(),Toast.LENGTH_SHORT).show(); finish(); }else{ Toast.makeText(this,supperClassTwo.getMsg(),Toast.LENGTH_SHORT).show(); } } }//IMainActivity
package view.bw.com.weekend3; /** * Created by lenovo on 2018/1/6. */ public interface IMainActivity { void onFailed(String str); void onSuccess(Object o); }
//MainActivity
package view.bw.com.weekend3; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.Toast; import view.bw.com.persenter.LoginPersenter; import view.bw.com.view2.RegisterActivity; public class MainActivity extends AppCompatActivity implements IMainActivity { /** * 请输入电话号 */ private EditText mEtMobile; /** * 请输入密码 */ private EditText mEtPass; private LoginPersenter loginPersenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { mEtMobile = (EditText) findViewById(R.id.et_mobile); mEtPass = (EditText) findViewById(R.id.et_pass); loginPersenter = new LoginPersenter(this); } public void btn_login(View view){ String mobile = mEtMobile.getText().toString(); String password = mEtPass.getText().toString(); loginPersenter.login(mobile,password); } public void btn_register(View view){ Intent intent = new Intent(MainActivity.this,RegisterActivity.class); startActivity(intent); } @Override public void onFailed(String str) { Toast.makeText(this,str,Toast.LENGTH_SHORT).show(); } @Override public void onSuccess(Object o) { String result = o.toString(); Intent intent = new Intent(MainActivity.this,SecondActivity.class); intent.putExtra("result",result); startActivity(intent); } }
//SecondActivity
package view.bw.com.weekend3; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.Toast; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; import view.bw.com.adapter.MyAdpter; import view.bw.com.bean.SupperClass; public class SecondActivity extends AppCompatActivity { /** * 我想找... */ private EditText mEtName; private ListView mLv; private String result; private List<SupperClass.DataBean> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); initView(); initText(); } private void initView() { mEtName = (EditText) findViewById(R.id.et_name); mLv = (ListView) findViewById(R.id.lv); list = new ArrayList<>(); } private void initText() { Intent intent = getIntent(); result = intent.getStringExtra("result"); } //点击搜索 public void btn_select(View view) { Gson g = new Gson(); SupperClass supperClass = g.fromJson(result, SupperClass.class); for (int i = 0;i<30;i++){ SupperClass.DataBean data = supperClass.getData(); list.add(data); } MyAdpter adapter = new MyAdpter(list,SecondActivity.this); mLv.setAdapter(adapter); } }
//布局
//activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <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="view.bw.com.weekend3.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录界面" android:gravity="center" android:textSize="25sp" android:textColor="#000000"/> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#000000"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入电话号" android:id="@+id/et_mobile" android:layout_marginTop="80dp" android:padding="10dp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" android:inputType="textPassword" android:id="@+id/et_pass" android:layout_marginTop="80dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="80dp" android:orientation="horizontal"> <Button android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="登录" android:onClick="btn_login" /> <Button android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="注册" android:onClick="btn_register" /> </LinearLayout> </LinearLayout>//activity_register.xml
<?xml version="1.0" encoding="utf-8"?> <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="view.bw.com.weekend3.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="注册界面" android:gravity="center" android:textSize="25sp" android:textColor="#000000"/> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#000000"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入电话号" android:id="@+id/et_mobile" android:layout_marginTop="80dp" android:padding="10dp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" android:inputType="textPassword" android:id="@+id/et_pass" android:layout_marginTop="80dp" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="注册" android:onClick="btn_registerNow" /> </LinearLayout>//activity_second.xml
<?xml version="1.0" encoding="utf-8"?> <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:orientation="vertical" android:layout_height="match_parent" tools:context="view.bw.com.weekend3.SecondActivity"> <!--标题--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="0dp" android:layout_weight="9" android:layout_height="wrap_content" android:text="搜索商品" android:textSize="20dp" android:gravity="center" /> <ImageView android:layout_width="0dp" android:layout_weight="1" android:layout_height="25dp" android:src="@drawable/grid_icon"/> </LinearLayout> <!--搜索条--> <LinearLayout android:layout_width="match_parent" android:orientation="horizontal" android:layout_marginTop="5dp" android:layout_height="wrap_content"> <EditText android:layout_width="0dp" android:layout_weight="8" android:layout_height="wrap_content" android:hint="我想找..." android:layout_margin="10dp" android:id="@+id/et_name" /> <Button android:layout_width="0dp" android:layout_weight="2" android:layout_height="wrap_content" android:text="搜索" android:onClick="btn_select" android:layout_margin="10dp"/> </LinearLayout> 显示区 <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/lv" /> </LinearLayout>//item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="match_parent"> <ImageView android:layout_width="60dp" android:layout_height="60dp" android:layout_margin="5dp" android:id="@+id/iv"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:id="@+id/item_tt"/> </LinearLayout>