请求网络数据后更新视图

请求网络数据后更新视图
zhaohu 发布于 2010年12月09日 20时 (0评) 3人收藏此代码, 我要收藏(?)
Android不能直接在子线程中更新视图,需要借助 Handler 类来实现视图更新

代码片段(1)

[代码] [Java]代码

01 public void onCreate(Bundle savedInstanceState) { 
02   super.onCreate(savedInstanceState); 
03   setContentView(R.layout.soft_recommend); 
04      
05   listview = (ListView) findViewById(R.id.recommSoftList); 
06   //判断数据对象是否为NULL
07   if(SoftInfo.recommendSofts == null){ 
08    //定义后台请求网络数据进度条
09    recommProBar = (ProgressBar)findViewById(R.id.recommProBar4); 
10    recommProBar.setIndeterminate(false); 
11    recommProBar.setVisibility(View.VISIBLE); 
12    // 起始一个运行线程
13    new Thread(new Runnable() { 
14     public void run() { 
15      //请求网络数据 
16      iconTexts = SoftInfo.getRecommImageTexts(Constants.RECOMM_SOFT_URL); 
17      //执行视图更新 
18      SoftRecommend.this.listHandler 
19        .sendMessage(SoftRecommend.this.listHandler 
20          .obtainMessage()); 
21     
22    }).start();  
23   }else
24    iconTexts = SoftInfo.getImageTexts(SoftInfo.recommendSofts); 
25    ImageTextAdapter adapter = new ImageTextAdapter(this); 
26    adapter.setIconTexts(iconTexts); 
27    adapter.setViewId(R.layout.img_txt_view); 
28    listview.setAdapter(adapter); 
29   
30 }
31 /** 
32   * 更新当前UI视图 
33   */ 
34  Handler listHandler = new Handler(){ 
35   /** 
36    
37    * @param msg 
38    * @author  
39    * @date 2010-12-7 
40    * (non-Javadoc) 
41    * @see android.os.Handler#handleMessage(android.os.Message) 
42    */ 
43   public void handleMessage(Message msg){     
44    recommProBar.setVisibility(View.GONE); 
45      ImageTextAdapter adapter = new ImageTextAdapter(SoftRecommend.this); 
46      adapter.setIconTexts(iconTexts); 
47      adapter.setViewId(R.layout.img_txt_view); 
48      listview.setAdapter(adapter); 
49      super.handleMessage(msg); 
50   
51  };
原文地址:https://www.cnblogs.com/moonvan/p/2021015.html