安卓中,非主线程是无法修改UI界面的。
必须要使用Handler这个类来执行我们要修改的UI。
1. Handler对象定义在MainActivity中:
private Handler hander = new Handler(){
@Override
public void handleMessage(Message msg) {
switch(msg.what){
case 0:
mAdapter = new SimpleAdapter(MainActivity.this, data, R.layout.item, new String[]{"name", "teacher", "institute"}, new int[]{R.id.coursename, R.id.teacher, R.id.institute});
mAdapter.notifyDataSetChanged(); //发送消息通知ListView更新
listView.setAdapter(mAdapter); // 重新设置ListView的数据适配器
break;
default:
//do something
break;
}
}
};
2. 然后在其他线程的run函数中用以下代码给Handler发送消息,发送过去后该Handler就会执行对应的工作。
@Override
public void run() {
Toast.makeText(getApplicationContext(), "请求成功", Toast.LENGTH_SHORT).show();
hander.sendEmptyMessage(0); // 下载完成后发送处理消息
}