a179583637 2016-06-28 12:08 采纳率: 0%
浏览 1101

求大神给我在我的基础上改下代码

我获取网络数据,想要把获取到的bitmap格式的图片显示到布局中,可是不好使,我已经困扰了一个礼拜了,我献上我的一点小心意,我学习学习
package textview.exam;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import com.baidu.apistore.sdk.ApiCallBack;
import com.baidu.apistore.sdk.ApiStoreSDK;
import com.baidu.apistore.sdk.network.Parameters;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FragmentMainchatnews extends Fragment {
private List list;
private MyListView lv;
private LvAdapter adapter;
private String urlString;
Handler handler1;
int return_count;
Bitmap bitmap1;
List> listItemx = new ArrayList>();
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.main_chat_news, null);
    final Thread thread=new Thread(runnable);
    thread.start();

/* lv = (MyListView) view.findViewById(R.id.chat_news);
lv.setonRefreshListener(new MyListView.OnRefreshListener() {
@Override
public void onRefresh() {
new AsyncTask() {
protected Void doInBackground(Void... params) {
try {
Thread.sleep(2000);
thread.start();
} catch (Exception e) {
// Toast toast = Toast.makeText(getActivity(), "网络连接失败,请重试",Toast.LENGTH_SHORT);
//屏幕上方显示,X轴和Y轴偏移量都是0
toast.setGravity(Gravity.TOP, 0, 0);
toast.show();*//*
}

                    return null;
                }

                @Override
                protected void onPostExecute(Void result) {
                    //adapter.notifyDataSetChanged();
                    lv.onRefreshComplete();
                }
            }.execute(null, null, null);
        }
    });
    //adapter = new LvAdapter(lv,this);
    lv.setAdapter(adapter);*/
    return view;
}
//创建Hander对象,用于接收子线程接收到的数据
Handler handler = new Handler() {
    public void handleMessage(android.os.Message msg) {
        if (msg.arg1 == 0X456) {
            listItemx= (List<Map<String, Object>>) msg.obj;
            // 创建一个SimpleAdapter实现界面的更新
            SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity(), listItemx, R.layout.news_simple_item,
                    new String[]{"image", "title", "abs"},
                    new int[]{R.id.image, R.id.title, R.id.abs});
            ListView list = (ListView) getView().findViewById(R.id.chat_news);
            // 为ListView设置Adapter
            list.setAdapter(simpleAdapter);
            simpleAdapter.setViewBinder(new SimpleAdapter.ViewBinder() {
                @Override
                public boolean setViewValue(View view, Object data,
                                            String textRepresentation) {
                    // TODO Auto-generated method stub
                    if ((view instanceof ImageView) && (data instanceof Bitmap)) {
                            ImageView vi = (ImageView) view;
                            vi.setImageBitmap((Bitmap) data);
                        Log.i("我是", "二蛋");
                        return true;

                    }
                    Log.i("我是", "sadasd");
                    return false;

                }
            });
            //动态更新ListView
            simpleAdapter.notifyDataSetChanged();
        }
    }

    ;
};
//开启子线程得到数据
private Runnable runnable= new Runnable() {
    public void run() {
        final Message message = handler.obtainMessage();
        Parameters para = new Parameters();
        Log.i("尼玛","1");
        para.put("keyword", "娱乐");
        para.put("page","3");
        ApiStoreSDK.execute("http://apis.baidu.com/songshuxiansheng/real_time/search_news",
                ApiStoreSDK.GET,
                para,
                new ApiCallBack() {
                    @Override
                    public void onSuccess(int status, String responseString) {
                        Log.i("连接状态", "连接成功");

                        try {
                            JSONObject  dataJson=new JSONObject(responseString);
                            JSONObject  retData=dataJson.getJSONObject("retData");
                            JSONArray data=retData.getJSONArray("data");
                            int return_count=retData.getInt("return_count");
                            List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
                            // 创建一个List集合,List集合的元素是Map
                            for (int i=0; i < return_count; i++) {
                                JSONObject info = data.getJSONObject(i);
                                Map<String, Object> listItem = new HashMap<String, Object>();
                                urlString=info.getString("img_url");
                                Thread thread1=new Thread(runnable1);
                                thread1.start();
                                //创建Hander对象,用于接收子线程的图片
                                handler1 = new Handler() {
                                    public void handleMessage(android.os.Message msg) {
                                        if (msg.arg1 == 0X123) {
                                            Log.i("我爱","你");
                                            bitmap1 = (Bitmap) msg.obj;
                                        }
                                    }
                                };
                                listItem.put("title", info.getString("title"));
                                listItem.put("image", bitmap1);
                                listItem.put("abs", info.getString("abstract"));
                                listItems.add(listItem);


                            }
                            message.obj = listItems;
                            //定义标识子线程
                            message.arg1 = 0X456;
                            handler.sendMessage(message);
                            Log.i("循环"+0,"次");

                        } catch (JSONException e) {
                            Log.i("获取到数据:", responseString);
                        }
                    }

                    @Override
                    public void onComplete() {
                        Log.i("sdkdemo", "onComplete");
                    }

                    @Override
                    public void onError(int status, String responseString, Exception e) {
                        Log.i("sdkdemo", "onError, status: " + status);
                        Log.i("sdkdemo", "errMsg: " + (e == null ? "" : e.getMessage()));
                    }

                });

    }
};
//开启另子线程得到图片
Runnable runnable1= new Runnable() {
    public void run() {
        final Message message = handler.obtainMessage();
        //获取网络图片
        URL url;
        Bitmap bitmap = null;

        try {
            url = new URL(urlString);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setConnectTimeout(6000);
            connection.setDoInput(true);
            connection.setUseCaches(true);

            InputStream is = connection.getInputStream();
            bitmap = BitmapFactory.decodeStream(is);
            is.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        message.obj = bitmap;
        //定义标识子线程
        message.arg1 =0X123;
        handler1.sendMessage(message);
    }


};

}
现在是只显示文字信息,图片根本不显示
我没有C币了,不好意思

  • 写回答

2条回答 默认 最新

  • devmiao 2016-06-28 16:18
    关注

    自己仔细调试下,要细心一点的。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算