请求网络数据后更新视图,请求网络数据视图
投稿于 被查看 16735 次 评论:265
请求网络数据后更新视图,请求网络数据视图
Android不能直接在子线程中更新视图,需要借助Handler 类来实现视图更新1.[Java]代码
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.soft_recommend); listview = (ListView) findViewById(R.id.recommSoftList); //判断数据对象是否为NULL if(SoftInfo.recommendSofts == null){ //定义后台请求网络数据进度条 recommProBar = (ProgressBar)findViewById(R.id.recommProBar4); recommProBar.setIndeterminate(false); recommProBar.setVisibility(View.VISIBLE); // 起始一个运行线程 new Thread(new Runnable() { public void run() { //请求网络数据 iconTexts = SoftInfo.getRecommImageTexts(Constants.RECOMM_SOFT_URL); //执行视图更新 SoftRecommend.this.listHandler .sendMessage(SoftRecommend.this.listHandler .obtainMessage()); } }).start(); }else{ iconTexts = SoftInfo.getImageTexts(SoftInfo.recommendSofts); ImageTextAdapter adapter = new ImageTextAdapter(this); adapter.setIconTexts(iconTexts); adapter.setViewId(R.layout.img_txt_view); listview.setAdapter(adapter); } } /** * 更新当前UI视图 */ Handler listHandler = new Handler(){ /** * * @param msg * @author * @date 2010-12-7 * (non-Javadoc) * @see android.os.Handler#handleMessage(android.os.Message) */ public void handleMessage(Message msg){ recommProBar.setVisibility(View.GONE); ImageTextAdapter adapter = new ImageTextAdapter(SoftRecommend.this); adapter.setIconTexts(iconTexts); adapter.setViewId(R.layout.img_txt_view); listview.setAdapter(adapter); super.handleMessage(msg); } };
用户评论