子线程和Handler获取网络图片

子线程中获取了网络接口,然后传给了Handler,Handler里解析Json,获得的Json中有图片网络地址,怎样在Handler中取网络图片,求大神指点迷津!!!感激不尽

3个回答

获取网络图片肯定要在子线程里获取,当然图片加载框架就行了,框架里面已经实现子线程下载图片的,只需要在回调中获取图片就行了

Mr_____He
请叫我Mr_He 因为好像Handler里面的值不能赋给它外面的变量,所以我打算在Handler里面再开个线程进行下载图片,但是好像不行,
3 年多之前 回复

我是从网络获取的Json数据,然后再Handler里解析,解析中有图片网络地址,就是下面imgurl,但是之后不知道该怎么做了

 handler = new Handler() {
            private String imgurl;

            @Override
            public void handleMessage(Message msg) {
                if (msg.what == 2) {
                    String jsondata = (String) msg.obj;
                    try {
                        mapList = new ArrayList<>();
                        JSONObject jsonObject = new JSONObject(jsondata);
                        String warning = jsonObject.getString("message");
                        int errorcode = jsonObject.getInt("errorcode");
                        if (errorcode == 1) {
                            Toast.makeText(getContext(), warning, Toast.LENGTH_SHORT).show();
                        }
                        JSONArray array = jsonObject.getJSONArray("data");
                        for (int i = 0; i < array.length(); i++) {
                            HashMap<String, Object> hashMap = new HashMap<>();
                            JSONObject object = array.getJSONObject(i);
                            String originalPrice = String.valueOf(object.getDouble("originalPrice"));
                            String price = String.valueOf(object.getDouble("price"));
                            String title = object.getString("goodsName");
                            String goodsCode = object.getString("goodsCode");
                            imgurl = object.getString("goodsImage");

                            hashMap.put("originalprice", originalPrice);
                            hashMap.put("price", price);
                            hashMap.put("title", title);
                            hashMap.put("goodsCode", goodsCode);
                            hashMap.put("imgurl", imgurl);
                            mapList.add(hashMap);
                        }
                        adapter = new XIangGuanAdapter(mapList, getContext());
                        listView.setAdapter(adapter);
                        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                            @Override
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                Product_details.goodsCode = (String) mapList.get(position).get("goodsCode");
                                getParentFragment().getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.fragment, new Product_details()).commit();
                            }
                        });
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

你在线程里面去解析数据,解析成功message返回CODE,解析失败返回另外一个CODE,然后用匿名对象去接收返回的CODE,然后处理对应的适配就可以了

Mr_____He
请叫我Mr_He 不太明白啊,是在线程中解析json然后传给handler吗,然后handler中传过来的网络图片地址又怎么办啊,另外,这个是在一个fragment中的
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐