我获取网络数据,想要把获取到的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币了,不好意思