android 网络加载布局,关于android利用子线程请求网络获取数据添加到指定的布局中不显示的问题...

该博客主要讨论了在Android应用中,一个Fragment如何通过Handler从网络获取数据并更新ListView。作者遇到了数据不显示的问题,代码中创建了一个线程来执行网络请求,并在主线程中使用Handler更新UI。代码涉及到网络请求、JSON解析、ListView适配器的使用,以及图片下载。然而,存在可能的错误,导致数据显示不正常。
摘要由CSDN通过智能技术生成

先上代码public class FragmentMainchatnews extends Fragment {

private Button button;

private Bitmap imageView;

@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);

Thread thread=new Thread(runnable);

Log.i("尼玛","0");

return view;

}

//创建Hander对象,用于接收子线程的

Handler handler = new Handler() {

public void handleMessage(android.os.Message msg) {

if (msg.arg1 == 1) {

List> listItems = new ArrayList>();

listItems= (List>) msg.obj;

// 创建一个SimpleAdapter实现界面的更新

SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity(), listItems, 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);

//imageView.setImageBitmap(bitmap);

}

}

;

};

//开启子线程得到数据

Runnable runnable= new Runnable() {

public void run() {

final Message message = handler.obtainMessage();

Parameters para = new Parameters();

Log.i("尼玛","1");

//para.put("keyword", "娱乐");

ApiStoreSDK.execute("http://apis.baidu.com/songshuxiansheng/news/news",

ApiStoreSDK.GET,

para,

new ApiCallBack() {

@Override

public void onSuccess(int status, String responseString) {

Log.i("连接状态:", "连接成功");

try {

JSONObject dataJson = new JSONObject(responseString);

JSONArray data = dataJson.getJSONArray("retData");

// 创建一个List集合,List集合的元素是Map

List> listItems = new ArrayList>();

//for (int i = 0; i 

JSONObject info = data.getJSONObject(0);

Map listItem = new HashMap();

//imageView = getHttpBitmap(info.getString("image_url"));

listItem.put("title", info.getString("title"));

//listItem.put("image",imageView);

listItem.put("abs", info.getString("abstract"));

listItems.add(listItem);

message.obj = listItems;

//定义标识子线程

message.arg1 = 1;

handler.sendMessage(message);

//}

} 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()));

}

});

}

};

//获取网络图片

private Bitmap getHttpBitmap(String urlString) {

Log.i("尼玛","7");

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) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return bitmap;

}

}

不知怎么回事就是不显示,请大神看看我这么写有什么错误嘛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值