实现从网络获取数据并适配到APP中----(Android综合小练习一)

Android综合小练习(一)

作为一名大二狗,学习编程无异于要常动手编写才能有所提升,所以这第一次写博客来记录,写的不好请见谅。

实现从网络获取数据并适配到APP中

实际GIF图:
在这里插入图片描述
(涉及到线程处理,网络请求,适配器,不太懂的话可以先查阅相关资料知识)

实现思路:

  1. 布局文件: 很简单一个Button以及一个RecyclerView(我选用了RecyclerView适配器,好用);数据bean布局文件。
  2. 主程序代码逻辑: 将uri放在子线程中进行网络请求处理,成功获取到字节流并从中提取我们所需要的数据,最后将获取到数据通过适配器显示结果。
  3. RecyclerView适配器: 继承RecyclerView类,重写其中方法实现将数据与适配器匹配。

布局文件:

主程序布局:
在这里插入图片描述
数据bean布局:
在这里插入图片描述
数据bean.class:
这个就不解释了,很简单。
在这里插入图片描述
主程序代码逻辑(详细):
首先,声明并绑定控件啦!
在这里插入图片描述

要实现点击按钮调用子线程进行网络请求,所以要对按钮监听以及启动子线程。(干活啦线程兄dei~)
在这里插入图片描述
在这里插入图片描述

线程处理有很多方式,我选择了一种简便方法,那就是AsyncTack类啦!使用这种方法可以很大程度的方便了编码,所以我们要创建一个类去继承AsyncTack实现我们要的东西。
在这里插入图片描述
会要求实现重写doInBackground()方法,所以就按要求来吧。简单的讲一下:
"String" 代表这你要传递处理的数据类型,
"Integer" 代表延迟处理时的进度数据类型,
*"List <ItemBean>" 代表处理完成后返回的数据类型,

所以此时我们创建了我们要的子线程类,但是会发现要求我们重写doInBackground()方法,此方法为何物呢?其实我们的延时处理都在此方法中实现。所以要在此方法中执行网络请求。

实现网络网络请求步骤:创建HttpURLConnection对象,通过URL地址打开链接,设置好请求方式,启动连接,此时会返回一个回应码。通过核实回应码判断是否连接成功,成功了在执行接下来解析JSON数据的任务。于是乎:
在这里插入图片描述

响应成功后获取的是字节流,若要取得想要的数据还需要进一步的处理(加油吧~)
创建InputStream对象获取返回的数据,然后通过BufferReader将字节流读取并存储在缓冲区中,以便我们后续操作:

在这里插入图片描述

然后就是处理获取到的数据啦!
在这里插入图片描述
在这里插入图片描述

通过查看JSON数据会发现它是一个Object数组数据,而每一个数组元素中又包含了不同值的属性,所以要创建对应的数组来获取我们需要的数据,至于大小取决于获取的Object数组大小。
在这里插入图片描述
在这里插入图片描述

然后创建数据bean列表用来存储每一个bean实例化对象,将对象适配到RecyclerView当中,从而显示结果。
在这里插入图片描述
在这里插入图片描述

由于在这里选择以项目资源图片形式加载图片(后面会通过创建一个解析JSON数据中每一张图片方法实现从内存中显示我们获取的位图)。

在这里插入图片描述
在这里插入图片描述

此时大致逻辑就实现了,但是有没有发现缺少了一点啥?那就是RecyclerView啦~,创建一个类继承RecyclerView来构建我们需要的适配器。

在这里插入图片描述

继承RecyclerView时候会发现要求我们重新onCreateViewHolder(),onBindViewHolder()和getItemCount()三个方法来实现符合我们的适配器,简单的说一下:

onCreateViewHolder(): 在此方法中需要将数据bean布局加载进来,创建ViewHoldr实例并将加载进来的布局传入到构造函数中,最后返回ViewHolder实例对象。

onBindViewHolder(): 用于对RecyclerView子项数据赋值,当子项被滚动到屏幕内会执行。

getIteamCount(): 用于返回RecyclerView中所有子项数目。

具体RecyclerView详细讲解,我放出一个网址提供参考:
https://www.jianshu.com/p/da23fe946ed1

于是乎,重写了三个方法后构建出所需要的适配器(很简单滴):

在这里插入图片描述
最后最后,那就是初始化适配器并设置好,然后就可以看到结果啦!

在这里插入图片描述

搞定,简单吧,后续我会进行代码的优化,所以加油吧!

完整代码截图:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值