(Android实战)ProgressBar+AsyncTask实现界面数据异步加载(含效果图)

1 效果图

(Android实战)ProgressBar+AsyncTask实现界面数据异步加载(含效果图)_第1张图片

加载数据时

(Android实战)ProgressBar+AsyncTask实现界面数据异步加载(含效果图)_第2张图片

加载数据完成时

(Android实战)ProgressBar+AsyncTask实现界面数据异步加载(含效果图)_第3张图片

加载数据异常时

2 实现说明

加载前:界面显示异步加载控件,隐藏数据显示控件,加载异常控件

加载成功:根据加载的数据,初始化数据显示控件

加载失败:显示加载异常的控件,异常异步加载控件

中间的加载过程,通过AsyncTask来实现,在AsyncTask中主要实现两个方法

//后台运行,互联网后台数据加载接口

protected Integer doInBackground(String... params)

//数据加载完成,结合数据,进行UI处理

protected void onPostExecute(Integer result)

3 实现代码

3.1界面部分


加载控件:


         
          
 
复制代码

加载失败控件:


          
           
复制代码

数据展示控件:

View Code
  
   
       
   
   
   
       
           
       
       
               
               
       
       
       
           
          
   
   
   
       
   
   
   
       
   
    
复制代码

3.2后台代码

AsyncTask 类的生成,和调用:

View Code
 //AsyncTask
    class AsyncLoader_GuessInfo extends AsyncTask{
      @Override
      protected Integer doInBackground(String... params) {
         int result=0;
          try{ 
              //加载数据
              if(params[0].length()>0)
                  model= IntegralDataServiceHelper.GetRank(params[0],ProjectConstant.AppID);
              list= IntegralDataServiceHelper.GetTopList(0, 10,ProjectConstant.AppID);
              if(list!=null)
                  result=2;
          }
         catch(Exception ex){
             result=-1; 
         }      
        return result;
      } 
      
      @Override  //处理界面
      protected void onPostExecute(Integer result) {  
          Log.i("ExerciseGuess", "onPostExecute(Result result) called");  
        
          if( result==2)
                  LoadAndBandingData();
           else
           {
            LinearLayout async_begin=(LinearLayout)findViewById(R.id.async_begin);
               async_begin.setVisibility(View.GONE);
               
               LinearLayout async_error=(LinearLayout)findViewById(R.id.async_error);
            async_error.setVisibility(View.VISIBLE);
              
           }
       }  
    }

调用:new AsyncLoader_GuessInfo().execute(account);


异步界面,重试部分实现

 //加载刷新按钮事件    
        Button but_reflesh=(Button)findViewById(R.id.but_reflesh);
        but_reflesh.setOnClickListener(new  Button.OnClickListener()
        {
            public void onClick(View v){
                //显示加载的部分
                LinearLayout async_begin=(LinearLayout)findViewById(R.id.async_begin);
                   async_begin.setVisibility(View.VISIBLE);
                   
                //隐藏异步加载失败部分
                      LinearLayout async_error=(LinearLayout)findViewById(R.id.async_error);
                async_error.setVisibility(View.GONE);
                //异步加载
                new AsyncLoader_GuessInfo().execute(account);
                
            }
        });
复制代码

界面初始化数据部分:

View Code
public void LoadAndBandingData()
    {
        LinearLayout async_begin=(LinearLayout)findViewById(R.id.async_begin);
        async_begin.setVisibility(View.GONE);
        LinearLayout rl_content=(LinearLayout)findViewById(R.id.rl_content);
        rl_content.setVisibility(View.VISIBLE);
        
        
        TextView txt_nicename =(TextView)findViewById(R.id.txt_nicename);
         TextView txt_integral =(TextView)findViewById(R.id.txt_integral);  
            
          if(model!=null)
          {
              txt_nicename.setText(String.valueOf(model.RankNo)+". "+model.UserNiceName);
              txt_integral.setText("当前的积分:"+String.valueOf(model.IntegralSum));
          }
          else
          {
              txt_nicename.setText("当前还没有注册用户!");
              txt_integral.setText("当前的积分:0");  
          }
          
          ListView listview =(ListView)findViewById(R.id.listView_ranklist);
          listview.setAdapter(new RankListAdapter(this, R.layout.sub_ranlist_item,list));
        //增加选择事件
          listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

               @Override
               public void onItemClick(AdapterView arg0, View arg1, int arg2,
                       long arg3) {
               }    
          });
复制代码

你可能感兴趣的:((Android实战)ProgressBar+AsyncTask实现界面数据异步加载(含效果图))