01
21
15
25

关于另开一个类里面进行网络请求解析出图片地址list,然后通过调用传递list的问题

关于另开一个类里面进行网络请求解析出图片地址list,然后通过调用传递list的问题

http://img1.sycdn.imooc.com//climg/5c0d1a840001bc2608220782.jpg

我自己定义了一个类,然后网络请求解析得到了图片地址的imalist,但是好像并不能将imglist赋值给外面的list,赋值过去里面也是什么都没有,老师有没有什么方法或者思路能够解决这个问题,还是说网络请求必须写在你需要进行网络请求的那个类里面啊,感觉不单独拿出来写的话代码太臃肿了

正在回答

登陆购买课程后可参与讨论,去登陆

5回答

下图上面两个回调方法是在子线程中运行的,不是在主线程中,而下面红框的你写的方法是在主线程中运行的,因此数据不同步,实现不了你要的功能,如果想把数据从子线程带到主线程,你可以使用handler、Activity的runOnUiThread方法(老师课程案例演示的)、接口回调、广播等

http://img1.sycdn.imooc.com//climg/5c0de4530001cac308040606.jpg

提问者 eclo 2018-12-10 11:09:16

我的大致思路就是下面图片这样的步骤

http://img1.sycdn.imooc.com//climg/5c0dd84e00011aac09220813.jpg

http://img1.sycdn.imooc.com//climg/5c0dd84e00018e6506470545.jpg

我感觉是因为上面LoadBiz的getData()没有成功取到图片地址才造成的,就是不知道怎么解决把onResponse()里的图片地址能够赋值给onResponse()外面的list

irista23 2018-12-10 10:31:45

1、如下代码有问题,for循环遍历的是创建的新的List,所以返回的是空的数据

http://img1.sycdn.imooc.com//climg/5c0dce840001bf2805020167.jpg

2、你在onResponse()回调方法中可以通过接口回调,也可以在activity中定义集合通过runOnUiThread去更新集合数据,注意你循环的条件是imgList.size()

  • 提问者 eclo #1
    循环条件这里我知道,之前是因为把List<String> imgList = new ArrayList<>()放在了onResponse()里面外面无法调用imglist,后面我放在外面之后log打印发现只有onResponse()里面打印imglist才能打印出图片地址,在onResponse()外面打印imglist打印不出来,说明imglist只有在onResponse()里面才有值,这也是我不明白以及不知道如何才能将imglist值拿出来的问题,可以看一下我下面回答的图片
    2018-12-10 11:01:46
  • 提问者 eclo #2
    老师解决了,是因为我把List<String> imgList = new ArrayList<>()放在了getData()里面,应该把它放在LoadBiz当成类成员变量就解决了值拿不出来的问题,也谢谢老师提供的思路
    2018-12-10 11:22:40
  • 提问者 eclo #3
    貌似还是不行。。。
    2018-12-10 11:32:31
提问者 eclo 2018-12-09 22:24:59

是不是只有自己对网络请求通过handler进行封装才能达到可以在其他类中通过调用封装类的网络请求方法来实现这种功能,具体的实现思路是什么样的

提问者 eclo 2018-12-09 21:52:10

http://img1.sycdn.imooc.com//climg/5c0d1d2a0001c23204330082.jpg

不是因为这里list.add(list.get(i))的问题list得不到imglist的值,因为imglist根本无法在onResponse()外调用,之前我把List<String> imgList = new ArrayList<>();放在外面之后list.add(imglist.get(i))可以调用但是onResponse()方法外面通过Log打印不出来图片地址,但是在onResponse()里面就能够通过log打印出图片地址

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android数据通信开发与应用2018版
  • 参与学习           人
  • 提交作业       147    份
  • 解答问题       687    个

本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码