欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

请求网络数据后更新视图,请求网络数据视图

来源: 开发者 投稿于  被查看 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); 
  } 
 };

用户评论