Activity_main
<?
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"
> <
Button
android
:id=
"@+id/btn"
android
:layout_width=
"match_parent"
android
:layout_height=
"wrap_content"
android
:gravity=
"center"
android
:layout_marginTop=
"20dp"
android
:textSize=
"20sp"
android
:text=
"获取用户信息"/> <
LinearLayout
android
:layout_width=
"wrap_content"
android
:layout_height=
"wrap_content"
android
:layout_marginTop=
"20dp"
android
:orientation=
"horizontal"> <
TextView
android
:layout_width=
"wrap_content"
android
:layout_height=
"wrap_content"
android
:layout_marginLeft=
"40dp"
android
:text=
"mobile:"/> <
TextView
android
:id=
"@+id/mobile"
android
:layout_marginLeft=
"10dp"
android
:layout_width=
"wrap_content"
android
:layout_height=
"wrap_content"
android
:text=
""/> </
LinearLayout> <
LinearLayout
android
:layout_width=
"wrap_content"
android
:layout_height=
"wrap_content"
android
:layout_marginTop=
"20dp"
android
:orientation=
"horizontal"> <
TextView
android
:layout_width=
"wrap_content"
android
:layout_height=
"wrap_content"
android
:layout_marginLeft=
"40dp"
android
:text=
"password:"/> <
TextView
android
:id=
"@+id/password"
android
:layout_marginLeft=
"10dp"
android
:layout_width=
"wrap_content"
android
:layout_height=
"wrap_content"
android
:text=
""/> </
LinearLayout> <
Button
android
:id=
"@+id/tiao"
android
:layout_width=
"wrap_content"
android
:layout_height=
"wrap_content"
android
:layout_gravity=
"center"
android
:layout_marginTop=
"20dp"
android
:text=
"跳转"/> </
LinearLayout>
Activitymain:
package com.example.com.mamaipi1_2; import android.content.Intent; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.google.gson.Gson; 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.net.URLConnection; /*** * * 李浩钰 * 1.点击获取用户信息,开启线程,写耗时操作 * 2.得到Inputstream,将流转化为String * 3.gson解析 * 4.进行赋值 */ public class MainActivity extends AppCompatActivity { private TextView mobile; private TextView pwd; private Button btn; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { UserBean userBean = (UserBean) msg.obj; String mobiles = userBean.getData().getMobile(); String passwords = userBean.getData().getPassword(); //赋值 mobile.setText(mobiles); pwd.setText(passwords); } }; private Button tiao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取资源id mobile = findViewById(R.id.mobile); pwd = findViewById(R.id.password); btn = findViewById(R.id.btn); tiao = findViewById(R.id.tiao); //跳转 tiao.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,Two_Activity.class); startActivity(intent); } }); //给按钮设置点击事件 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //开启线程 new Thread(){ @Override public void run() { requestData(); } }.start(); } }); } //定义耗时操作的方法,子线程中运行 private void requestData() { try { //创建URL URL url = new URL("http://120.27.23.105/user/getUserInfo?uid=71"); //打开URL HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //设置URL urlConnection.setRequestMethod("GET"); urlConnection.setReadTimeout(5000); urlConnection.setConnectTimeout(5000); //判断结果码 if (urlConnection.getResponseCode() == 200){ //得到流 InputStream inputStream = urlConnection.getInputStream(); //将流转换成字符串 String s = steamToString(inputStream); //解析 Gson gson = new Gson(); UserBean userBean = gson.fromJson(s, UserBean.class); //handler发送消息 Message msg = Message.obtain(); msg.obj = userBean; handler.sendMessage(msg); } } catch (Exception e) { e.printStackTrace(); } } //将流转换成字符串的方法 private String steamToString(InputStream inputStream) { BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder builder = new StringBuilder(); String str; try { while ((str =reader.readLine()) != null){ builder.append(str); } } catch (IOException e) { e.printStackTrace(); } return builder.toString(); } }
适配器:
package com.example.com.mamaipi1_2; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; /** * Created by 李浩钰 on 2018/1/2. */ public class MyAdapter extends BaseAdapter{ Context context; List<ShangpingBean.DataBean.ListBean> list; public MyAdapter(Context context, List<ShangpingBean.DataBean.ListBean> list) { this.context = context; this.list = list; } @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 view, ViewGroup viewGroup) { ViewHolder holder; if (view == null){ view = View.inflate(context,R.layout.lv_layout,null); holder = new ViewHolder(); holder.tv = view.findViewById(R.id.tv); holder.imageView=view.findViewById(R.id.imageView); view.setTag(holder); }else{ holder = (ViewHolder) view.getTag(); } holder.tv.setText(list.get(i).getName()); mytask mytask = new mytask(holder.imageView); mytask.execute(list.get(i).getIcon()); return view; } private class ViewHolder{ TextView tv; ImageView imageView; } class mytask extends AsyncTask<String, Void, Bitmap> { private ImageView imgageView; public mytask(ImageView imageView) { this.imgageView=imageView; } @Override protected Bitmap doInBackground(String... strings) { try { URL url = new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); if (urlConnection.getResponseCode()!=200){ InputStream inputStream = urlConnection.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Bitmap s) { if (s==null){ imgageView.setImageResource(R.mipmap.ic_launcher); }else{ imgageView.setImageBitmap(s); } super.onPostExecute(s); } } }
子布局:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" > <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </android.support.constraint.ConstraintLayout>第二个页面:
package com.example.com.mamaipi1_2;
import android.os.AsyncTask;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
/***
* 李浩钰
* 1.执行异步方法,继承AsyncTask
* 2.重写方法
* 3.设置适配器
*/
public class
Two_Activity
extends AppCompatActivity {
private ListView
lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.
activity_two_);
//找到资源id
lv = findViewById(R.id.
lv);
//执行异步任务
MyTask myTask =
new MyTask(); myTask.execute(); }
//AsynTask
class MyTask
extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
//耗时操作
try {
//创建URL
URL url =
new URL(
"http://120.27.23.105/product/getProductCatagory?cid=1");
//打开URL
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//设置URL
urlConnection.setRequestMethod(
"GET"); urlConnection.setReadTimeout(
5000); urlConnection.setConnectTimeout(
5000);
//判断结果码
if (urlConnection.getResponseCode() ==
200){
//得到流
InputStream inputStream = urlConnection.getInputStream();
//将流转换成字符串
return steamToString(inputStream); } }
catch (Exception e) { e.printStackTrace(); }
return null; }
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//解析
Gson gson =
new Gson(); ShangpingBean shangpingBean = gson.fromJson(s, ShangpingBean.
class); List<ShangpingBean.DataBean.ListBean> list = shangpingBean.getData().get(
0).getList(); MyAdapter myAdapter =
new MyAdapter(
Two_Activity.
this, list);
lv.setAdapter(myAdapter); } }
public String steamToString(InputStream inputStream){ StringBuilder builder =
new StringBuilder();
try { BufferedReader reader =
new BufferedReader(
new InputStreamReader(inputStream)); String str;
while ((str = reader.readLine()) !=
null){ builder.append(str); } }
catch (IOException e) { e.printStackTrace(); }
return builder.toString(); } } view:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imageView" android:layout_width="60dp" android:layout_height="60dp" android:layout_alignParentTop="true" android:layout_marginTop="37dp" /> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/imageView" android:layout_marginBottom="10dp" android:textSize="20sp" android:text="123" /> </RelativeLayout>