您的位置:首页 > 理论基础 > 计算机网络

HttpURLConnection请求json数据加载到ListView上

2017-07-24 19:37 369 查看
案例效果图:



请大家做好准备,一起来领会到安卓的奇妙之处,实现一个Listview页面

清单文件的配置:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>


Listview每一条item的布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/image"
android:background="@mipmap/ic_launcher"/>

<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/image"
android:layout_toEndOf="@+id/image"
android:layout_marginLeft="90dp"
android:layout_marginStart="90dp"
android:id="@+id/textView" />

<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/image"
android:layout_alignLeft="@+id/textView"
android:layout_alignStart="@+id/textView"
android:id="@+id/textView2" />

</RelativeLayout>


Activity布局

<?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_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.a13683.zhoukao1.MainActivity">

<ListView
android:id="@+id/mylist"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
</RelativeLayout>


解析字符串的类

public class Date {
int dataSize;
public List<ApkBean> apk;

public int getDataSize() {
return dataSize;
}

public void setDataSize(int dataSize) {
this.dataSize = dataSize;
}

public List<ApkBean> getApk() {
return apk;
}

public void setApk(List<ApkBean> apk) {
this.apk = apk;
}

public class ApkBean{
private String id;
private String name;
private String iconUrl;
private String downloadUrl;
private String packageName;
private String versionName;
private String versionCode;
private String apkSize;
private String downloadTimes;
private String categoryName;
private String from;
private int markid;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getIconUrl() {
return iconUrl;
}

public void setIconUrl(String iconUrl) {
this.iconUrl = iconUrl;
}

public String getDownloadUrl() {
return downloadUrl;
}

public void setDownloadUrl(String downloadUrl) {
this.downloadUrl = downloadUrl;
}

public String getPackageName() {
return packageName;
}

public void setPackageName(String packageName) {
this.packageName = packageName;
}

public String getVersionName() {
return versionName;
}

public void setVersionName(String versionName) {
this.versionName = versionName;
}

public String getVersionCode() {
return versionCode;
}

public void setVersionCode(String versionCode) {
this.versionCode = versionCode;
}

public String getApkSize() {
return apkSize;
}

public void setApkSize(String apkSize) {
this.apkSize = apkSize;
}

public String getDownloadTimes() {
return downloadTimes;
}

public void setDownloadTimes(String downloadTimes) {
this.downloadTimes = downloadTimes;
}

public String getCategoryName() {
return categoryName;
}

public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}

public String getFrom() {
return from;
}

public void setFrom(String from) {
this.from = from;
}

public int getMarkid() {
return markid;
}

public void setMarkid(int markid) {
this.markid = markid;
}
}
}


Activity

ListView mylist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件id
mylist = (ListView) findViewById(R.id.mylist);
Luck();
}

//网络请求一般要在子线程跑
public String Luck(){
new Thread(new Runnable() {
@Override
public void run() {
////请求一个字符串
try {
String  path =("http://huixinguiyu.cn/Assets/js/data.js");
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//请求方式
conn.setRequestMethod("GET");
//设置连接超时间和读取超时时间
conn.setReadTimeout(8000);
conn.setConnectTimeout(8000);
//设置请求码
final int code = conn.getResponseCode();
//如果请求成功
if(code==200){
InputStream inputStream = conn.getInputStream();
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len = inputStream.read(buf))!=-1){
baos.write(buf,0,len);
baos.flush();
}

runOnUiThread(new Runnable() {
@Override
public void run() {
String string = baos.toString();
Gson gson = new Gson();
Date date = gson.fromJson(string, Date.class);
List<Date.ApkBean> apk =date.apk;
//适配
MyBase myBase = new MyBase(MainActivity.this, apk);
mylist.setAdapter(myBase);

}
});

}

} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
return null;
}

//设置适配器,适配内容
 class MyBase extends BaseAdapter{
Context content;
List<Date.ApkBean> list;

public MyBase(Context content, List<Date.ApkBean> list) {
this.content = content;
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) {
view = View.inflate(content,R.layout.item,null);
//控件
ImageView image = (ImageView) view.findViewById(R.id.image);
TextView name = (TextView) view.findViewById(R.id.textView);
TextView from = (TextView) view.findViewById(R.id.textView2);

//赋值
name.setText(list.get(i).getName());
from.setText(list.get(i).getFrom());
image.setImageResource(R.mipmap.ic_launcher );

return view;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: