安卓4.0显示网络开新线程问题package com.example.listwebimgimport java.io.IOExceptionimport java.io
安卓4.0显示网络开新线程问题
package com.example.listwebimg;
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 android.app.Activity;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ListView;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private ArrayList<HashMap<String, Object>> mylist;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new MyThread().start();
ListView list = (ListView) findViewById(R.id.listviewimg01);
mylist = new ArrayList<HashMap<String, Object>>();
ArrayList<HashMap<String, Object>> mylist2 = mylist;
MySimpleAdapter mSchedule = new MySimpleAdapter(this, //没什么解释
mylist2,//数据来源
R.layout.item,//ListItem的XML实现
//动态数组与ListItem对应的子项
new String[] {"title","imgsrc"},
//ListItem的XML文件里面的两个TextView ID
new int[] {R.id.listview_item_textview01,R.id.listview_item_imageview01});
list.setAdapter(mSchedule);
}
private class MyThread extends Thread{
public void run(){
//你要实现的代码
//添加list内容
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("title", "Hello World0");
map.put("imgsrc", "http://www.baidu.com/img/baidu_logo_jr_1003_315.gif");
mylist.add(map);
/*HashMap<String, Object> map1 = new HashMap<String, Object>();
map1.put("title", "Hello World1");
map1.put("imgsrc", "http://www.google.cn/intl/zh-CN/images/logo_cn.gif");
mylist.add(map1); */
}
}
/**
* 装载数据
* @return
*/
}
我这样不算是开新线程吗?怎么还显示不了啊 网络 Android 多线程
[解决办法]
线程不是说调用了start就会马上执行的,你这个情况基本上是到list.setAdapter(mSchedule);那里时你的MyThread?都还没执行。你在start后面加上Sleep(1000)试试,看会不会显示
[解决办法]
子线程不要对UI操作 用handler 这段代码 报错的可能性极大
