需要导入的依赖:
compile 'com.squareup.okhttp3:okhttp:3.3.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
------------- Callback -------------------------
------------- Contanst -------------------------
------------- GoodsBean -------------------------
------------- LoginModel -------------------------
------------- OkHttp -------------------------
compile 'com.squareup.okhttp3:okhttp:3.3.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
compile'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
添加的权限:
<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<---------------- model层 ---------------->------------- Callback -------------------------
package com.example.earl.baipenggui1511j20170108.model; public interface Callback { void onFailure(String error); void onSuccess(String json); }
------------- Contanst -------------------------
package com.example.earl.baipenggui1511j20170108.model; public class Contanst { public static final String login_url="https://www.zhaoapi.cn/user/login "; public static final String register_url="https://www.zhaoapi.cn/user/reg "; public static final String data_url="https://www.zhaoapi.cn/quarter/getJokes"; }
------------- GoodsBean -------------------------
package com.example.earl.baipenggui1511j20170108.model; import java.util.List; /** * Created by Earl on 2018/1/8. */ public class GoodsBean { /** * msg : 获取段子列表成功 * code : 0 * data : [{"commentNum":null,"content":"好好学习","createTime":"2018-01-06T08:41:13","imgUrls":null,"jid":1009,"praiseNum":null,"shareNum":null,"uid":221,"user":{"age":null,"fans":"null","follow":false,"icon":null,"nickname":"张倩","praiseNum":"null"}},{"commentNum":null,"content":"1111","createTime":"2017-12-31T14:48:44","imgUrls":null,"jid":1008,"praiseNum":null,"shareNum":null,"uid":10622,"user":{"age":null,"fans":"null","follow":false,"icon":null,"nickname":null,"praiseNum":"null"}},{"commentNum":null,"content":"哈哈","createTime":"2017-12-30T11:39:31","imgUrls":"https://www.zhaoapi.cn/images/quarter/15146051717291514603586149.jpg","jid":1007,"praiseNum":null,"shareNum":null,"uid":92,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/151425855261420171226112227.jpg","nickname":"jinlin","praiseNum":"null"}},{"commentNum":null,"content":"我是傻逼范","createTime":"2017-12-29T17:00:43","imgUrls":"https://www.zhaoapi.cn/images/quarter/1514538043999com_bignox_app_store_hd_96x96.png","jid":1006,"praiseNum":null,"shareNum":null,"uid":160,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514537137140head.jpg","nickname":"范新华","praiseNum":"null"}},{"commentNum":null,"content":"efew","createTime":"2017-12-29T16:46:20","imgUrls":"https://www.zhaoapi.cn/images/quarter/1514537180484com_baway_liuhao1506b20170425_96x96.png","jid":1005,"praiseNum":null,"shareNum":null,"uid":160,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514537137140head.jpg","nickname":"范新华","praiseNum":"null"}},{"commentNum":null,"content":"efew","createTime":"2017-12-29T16:46:20","imgUrls":"https://www.zhaoapi.cn/images/quarter/1514537180437com_baway_liuhao1506b20170425_96x96.png","jid":1004,"praiseNum":null,"shareNum":null,"uid":160,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514537137140head.jpg","nickname":"范新华","praiseNum":"null"}},{"commentNum":null,"content":"6","createTime":"2017-12-29T09:45:34","imgUrls":"https://www.zhaoapi.cn/images/quarter/151451193490020171227-224704_clipboard.png|https://www.zhaoapi.cn/images/quarter/1514511934900big-thumbnail-1514386032712-clipboard.png","jid":1003,"praiseNum":null,"shareNum":null,"uid":169,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514355656170cropped_1514355656472.jpg","nickname":"不熟","praiseNum":"null"}},{"commentNum":null,"content":"你好世界","createTime":"2017-12-27T10:49:42","imgUrls":"https://www.zhaoapi.cn/images/quarter/1514342982944com_bignox_app_store_hd_96x96.png","jid":992,"praiseNum":null,"shareNum":null,"uid":106,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514536407781head.jpg","nickname":"刘浩","praiseNum":"null"}},{"commentNum":null,"content":"你好世界","createTime":"2017-12-27T10:45:40","imgUrls":"https://www.zhaoapi.cn/images/quarter/1514342740010com_bignox_app_store_hd_96x96.png|https://www.zhaoapi.cn/images/quarter/1514342740010com_example_ratingbar_96x96.png","jid":991,"praiseNum":null,"shareNum":null,"uid":106,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514536407781head.jpg","nickname":"刘浩","praiseNum":"null"}},{"commentNum":null,"content":"你好","createTime":"2017-12-26T11:27:12","imgUrls":"https://www.zhaoapi.cn/images/quarter/15142588320651514080581141.jpeg|https://www.zhaoapi.cn/images/quarter/15142588320651514080575785.jpeg","jid":990,"praiseNum":null,"shareNum":null,"uid":195,"user":{"age":null,"fans":"null","follow":false,"icon":"https://www.zhaoapi.cn/images/1514258580051mo.jpg","nickname":"nnnnnn","praiseNum":"null"}}] */ private String msg; private String code; private List<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 List<DataBean> getData() { return data; } public void setData(List<DataBean> data) { this.data = data; } public static class DataBean { /** * commentNum : null * content : 好好学习 * createTime : 2018-01-06T08:41:13 * imgUrls : null * jid : 1009 * praiseNum : null * shareNum : null * uid : 221 * user : {"age":null,"fans":"null","follow":false,"icon":null,"nickname":"张倩","praiseNum":"null"} */ private Object commentNum; private String content; private String createTime; private Object imgUrls; private int jid; private Object praiseNum; private Object shareNum; private int uid; private UserBean user; public Object getCommentNum() { return commentNum; } public void setCommentNum(Object commentNum) { this.commentNum = commentNum; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getCreateTime() { return createTime; } public void setCreateTime(String createTime) { this.createTime = createTime; } public Object getImgUrls() { return imgUrls; } public void setImgUrls(Object imgUrls) { this.imgUrls = imgUrls; } public int getJid() { return jid; } public void setJid(int jid) { this.jid = jid; } public Object getPraiseNum() { return praiseNum; } public void setPraiseNum(Object praiseNum) { this.praiseNum = praiseNum; } public Object getShareNum() { return shareNum; } public void setShareNum(Object shareNum) { this.shareNum = shareNum; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public UserBean getUser() { return user; } public void setUser(UserBean user) { this.user = user; } public static class UserBean { /** * age : null * fans : null * follow : false * icon : null * nickname : 张倩 * praiseNum : null */ private Object age; private String fans; private boolean follow; private Object icon; private String nickname; private String praiseNum; public Object getAge() { return age; } public void setAge(Object age) { this.age = age; } public String getFans() { return fans; } public void setFans(String fans) { this.fans = fans; } public boolean isFollow() { return follow; } public void setFollow(boolean follow) { this.follow = follow; } public Object getIcon() { return icon; } public void setIcon(Object icon) { this.icon = icon; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getPraiseNum() { return praiseNum; } public void setPraiseNum(String praiseNum) { this.praiseNum = praiseNum; } } } }
------------- LoginModel -------------------------
package com.example.earl.baipenggui1511j20170108.model; import android.text.TextUtils; import com.example.earl.baipenggui1511j20170108.presenter.Presenterinterface; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; /** * Created by Earl on 2018/1/8. */ public class LoginModel { public void vertily(String phone,String pass, int i, final Presenterinterface presenterinterface){ if(TextUtils.isEmpty(phone)){ presenterinterface.onFailure("手机号不能为空"); return; } boolean mobile=isMobile(phone); if(!mobile){ presenterinterface.onFailure("手机格式不对"); return; } if (TextUtils.isEmpty(pass)){ presenterinterface.onFailure("密码不能为空"); return; } if (pass.length()<6){ presenterinterface.onFailure("密码不能小于六位数"); return; } Map<String ,String> map=new HashMap<>(); map.put("mobile",phone); map.put("password",pass); if(i==1){ OkHttp.getInsert().doGet(Contanst.login_url, map, new Callback() { @Override public void onFailure(String error) { presenterinterface.onFailure(error); } @Override public void onSuccess(String json) { try { JSONObject jsonObject=new JSONObject(json); String code=jsonObject.optString("code"); if(code.equals("0")){ presenterinterface.onSuccess("成功"); } } catch (JSONException e) { e.printStackTrace(); } } }); }else{ OkHttp.getInsert().doGet(Contanst.register_url, map, new Callback() { @Override public void onFailure(String error) { presenterinterface.onFailure(error); } @Override public void onSuccess(String json) { try { JSONObject jsonObject=new JSONObject(json); String code=jsonObject.optString("code"); if (code.equals("0")){ presenterinterface.onSuccess("成功"); }else{ presenterinterface.onSuccess("已经注册"); } } catch (JSONException e) { e.printStackTrace(); } } }); } } private boolean isMobile(String number) { String num="[1][358]\\d{9}"; if(TextUtils.isEmpty(number)){ return false; }else{ return number.matches(num); } } }
------------- OkHttp -------------------------
package com.example.earl.baipenggui1511j20170108.model; import android.os.Handler; import java.io.IOException; import java.util.Map; import okhttp3.Call; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * Created by Earl on 2018/1/8. */ public class OkHttp { private Handler handler=new Handler(); private String str; private static OkHttp okhttp=null; public OkHttp(){ } public static OkHttp getInsert(){ if (okhttp==null){ synchronized (OkHttp.class){ okhttp=new OkHttp(); } } return okhttp; } public void doGet(String path, Map<String,String> map, final Callback callback){ StringBuffer sb=null; for (String key:map.keySet()){ if (sb==null){ sb=new StringBuffer(); sb.append("?"); }else{ sb.append("&"); } sb.append(key).append("=").append(map.get(key)); } OkHttpClient okHttpClient=new OkHttpClient(); Request request=new Request.Builder().url(path+sb.toString()).get().build(); Call call=okHttpClient.newCall(request); call.enqueue(new okhttp3.Callback(){ @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { callback.onFailure(e.getMessage()); } }); } @Override public void onResponse(Call call, Response response) throws IOException { str=response.body().string(); handler.post(new Runnable() { @Override public void run() { callback.onSuccess(str); } }); } }); } public static void doPost(String path,Map<String,String> map,final Handler.Callback callback){ //构建请求参数 FormBody.Builder bodyBuilder=new FormBody.Builder(); for (String key:map.keySet()){ bodyBuilder.add(key,map.get(key)); } Request request=new Request.Builder() .post(bodyBuilder.build()) .url(path) .build(); OkHttpClient okHttpClient = new OkHttpClient(); } }
<----------------view层---------------->
-------------ConentActivity-------------------------
package com.example.earl.baipenggui1511j20170108.view;
import android.media.Image;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.earl.baipenggui1511j20170108.R;
import com.example.earl.baipenggui1511j20170108.model.GoodsBean;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class ConentActivity extends AppCompatActivity {
private PullToRefreshListView plv;
private List<GoodsBean.DataBean> list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_conent);
//初始化组件
initViews();
//网络请求
getData();
}
private void initViews() {
plv = findViewById(R.id.plv);
}
public void getData() {
new MyTesk().execute("https://www.zhaoapi.cn/quarter/getJokes?source=android&appVersion=100&page=1");
}
private class MyTesk extends AsyncTask<String,Void,String>{
private StringBuilder stringBuilder;
@Override
protected String doInBackground(String... strings) {
//网络请求
try {
URL url = new URL(strings[0]);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
int responseCode = connection.getResponseCode();
Log.e("TAG_code",responseCode+"-----------");
if (responseCode==200){
InputStream inputStream = connection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
stringBuilder = new StringBuilder();
String s="";
//拼接
while ((s=bufferedReader.readLine())!=null){
stringBuilder.append(s);
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return stringBuilder.toString();
}
//解析数据
@Override
protected void onPostExecute(String s) {
Gson gson = new Gson();
GoodsBean goodsBean = gson.fromJson(s, GoodsBean.class);
List<GoodsBean.DataBean> data = goodsBean.getData();
Log.e("TAG_data",data+"???????????");
list.addAll(data);
MyAdapter myAdapter = new MyAdapter(list,ConentActivity.this);
plv.setAdapter(myAdapter);
}
}
}
-------------LoginView-------------------------
package com.example.earl.baipenggui1511j20170108.view; public interface LoginView { void onFailure(String error); void onSuccess(String str); }
-------------MainActivity-------------------------
package com.example.earl.baipenggui1511j20170108.view; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.example.earl.baipenggui1511j20170108.R; import com.example.earl.baipenggui1511j20170108.presenter.Precenter; public class MainActivity extends AppCompatActivity implements LoginView{ private EditText mobile; private EditText password; private Button login; private Button register; private Precenter precenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 initView(); precenter = new Precenter(this); } private void initView() { mobile = findViewById(R.id.mobile); password = findViewById(R.id.password); login = findViewById(R.id.login); register = findViewById(R.id.register); } public void login(View v){ precenter.vertify(mobile.getText().toString(),password.getText().toString(),1); } public void register(View v){ startActivity(new Intent(MainActivity.this,RegActivity.class)); } public void onFailure(String error) { Toast.makeText(MainActivity.this,error, Toast.LENGTH_SHORT).show(); } public void onSuccess(String str) { Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this,ConentActivity.class); startActivity(intent); } }
-------------Mapp-------------------------
package com.example.earl.baipenggui1511j20170108.view; import android.app.Application; import android.graphics.Bitmap; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import java.io.File; /** * Created by Earl on 2018/1/8. */ public class Mapp extends Application { public void onCreate() { super.onCreate(); File cacheFile=getExternalCacheDir(); ImageLoaderConfiguration config=new ImageLoaderConfiguration.Builder(this) .memoryCacheExtraOptions(480, 800)//缓存图片最大的长和宽 .threadPoolSize(2)//线程池的数量 .threadPriority(4) .memoryCacheSize(2*1024*1024)//设置内存缓存区大小 .diskCacheSize(20*1024*1024)//设置sd卡缓存区大小 .writeDebugLogs()//打印日志内容 .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理 .build(); ImageLoader.getInstance().init(config); } public static DisplayImageOptions getImageOptions(){ DisplayImageOptions optionsoptions=new DisplayImageOptions.Builder() .cacheInMemory(true)//使用内存缓存 .cacheOnDisk(true)//使用磁盘缓存 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式 .displayer(new RoundedBitmapDisplayer(90))//是否设置为圆角,弧度为多少 .build(); return optionsoptions; } }
-------------MyAdapter-------------------------
package com.example.earl.baipenggui1511j20170108.view; import android.content.Context; import android.media.Image; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.earl.baipenggui1511j20170108.R; import com.example.earl.baipenggui1511j20170108.model.GoodsBean; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * Created by Earl on 2018/1/8. */ public class MyAdapter extends BaseAdapter{ private List<GoodsBean.DataBean> list; private Context context; private ViewHolder vh; public MyAdapter(List<GoodsBean.DataBean> list, Context context) { this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View converView, ViewGroup viewGroup) { if (converView==null){ vh = new ViewHolder(); converView=View.inflate(context, R.layout.lv_item,null); vh.u_pic=converView.findViewById(R.id.u_pic); vh.uname=converView.findViewById(R.id.tv_uname); vh.content=converView.findViewById(R.id.content); vh.big_pic=converView.findViewById(R.id.big_pic); converView.setTag(vh); }else { vh=(ViewHolder)converView.getTag(); } ImageLoader.getInstance().displayImage((String) list.get(i).getImgUrls(),vh.big_pic); vh.uname.setText(list.get(i).getUser().getNickname()); vh.content.setText(list.get(i).getContent()); ImageLoader.getInstance().displayImage((String) list.get(i).getUser().getIcon(),vh.u_pic,Mapp.getImageOptions()); return converView; } private class ViewHolder { public ImageView u_pic; public TextView uname; public TextView content; public ImageView big_pic; } }
-------------MyImagloder-------------------------
package com.example.earl.baipenggui1511j20170108.view; import android.content.Context; import android.widget.ImageView; import com.nostra13.universalimageloader.core.ImageLoader; public class MyImagloder extends ImageLoader { public void displayImage(Context context, Object path, ImageView imageView) { //得到ImageLoader的实例 com.nostra13.universalimageloader.core.ImageLoader instance = com.nostra13.universalimageloader.core.ImageLoader.getInstance(); //通过ImageLoader设置图片 instance.displayImage((String) path, imageView); } }
-------------RegActivity-------------------------
package com.example.earl.baipenggui1511j20170108.view; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.example.earl.baipenggui1511j20170108.R; import com.example.earl.baipenggui1511j20170108.presenter.Precenter; public class RegActivity extends AppCompatActivity implements LoginView{ private EditText phone; private EditText pass; private Precenter precenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_reg); phone = (EditText) findViewById(R.id.mobile2); pass = (EditText) findViewById(R.id.password2); precenter = new Precenter(this); } public void register_btn(View view){ precenter.vertify(phone.getText().toString(),pass.getText().toString(),2); } @Override public void onFailure(String error) { Toast.makeText(RegActivity.this,error, Toast.LENGTH_LONG).show(); } @Override public void onSuccess(String str) { Toast.makeText(RegActivity.this,str,Toast.LENGTH_LONG).show(); if(str.equals("成功")){ finish(); } } }<----------------presenter层---------------->-------------Precenter-------------------------
package com.example.earl.baipenggui1511j20170108.presenter; import com.example.earl.baipenggui1511j20170108.model.LoginModel; import com.example.earl.baipenggui1511j20170108.view.LoginView; /** * Created by Earl on 2018/1/8. */ public class Precenter implements Presenterinterface{ private LoginView loginView; private static LoginModel loginModel; public Precenter(LoginView loginView){ this.loginView=loginView; loginModel=new LoginModel(); } public void vertify(String phone, String pass, int i){ loginModel.vertily(phone,pass,i,this); } @Override public void onFailure(String error) { loginView.onFailure(error); } @Override public void onSuccess(String string) { loginView.onSuccess(string); } }
-------------Presenterinterface-------------------------
package com.example.earl.baipenggui1511j20170108.presenter; public interface Presenterinterface { void onFailure(String error); void onSuccess(String string); }
-------------------activity_conent.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="com.example.earl.baipenggui1511j20170108.view.ConentActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是主页面" /> </LinearLayout>-------------------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="com.example.earl.baipenggui1511j20170108.view.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录" android:textSize="20sp" android:gravity="center"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/mobile" android:hint="请输入手机号"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/password" android:hint="请输入密码"/> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:gravity="center"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录" android:id="@+id/login" android:onClick="login"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="注册" android:id="@+id/register" android:onClick="register"/> </LinearLayout> </LinearLayout>-------------------activity_reg.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="com.example.earl.baipenggui1511j20170108.view.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="登录" android:textSize="20sp" /> <EditText android:id="@+id/mobile2" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入手机号" /> <EditText android:id="@+id/password2" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" /> <Button android:id="@+id/register2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" android:text="立即注册" android:onClick="register_btn"/> </LinearLayout>-------------------lv_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:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="80dp" android:id="@+id/u_pic" android:src="@mipmap/ic_launcher" android:layout_weight="1"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="80dp" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/tv_uname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="15dp" android:text="jinlin" /> <TextView android:id="@+id/tv_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:text="2017" /> </LinearLayout> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="200dp" android:src="@mipmap/item_jia" android:layout_weight="1"/> </LinearLayout> <TextView android:id="@+id/content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="haha" android:textSize="18sp" /> <ImageView android:id="@+id/big_pic" android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" /> </LinearLayout>