HttpURLConnection请求json数据加载到ListView上

案例效果图:


请大家做好准备,一起来领会到安卓的奇妙之处,实现一个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;
    }
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值