博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(Android实战)ProgressBar+AsyncTask实现界面数据异步加载(含效果图)
阅读量:5037 次
发布时间:2019-06-12

本文共 3997 字,大约阅读时间需要 13 分钟。

效果图

加载数据时

 加载数据完成时

 

 

 加载数据异常时

 

 

实现说明

 

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

 

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

 

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

 

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

 

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

protected Integer doInBackground(String... params)

 

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

protected void onPostExecute(Integer result)

 

 

实现代码

 

  3.1界面部分

  

加载控件:

  

 
 

 

加载失败控件: 

 
 

 

数据展示控件:

  

 

3.2后台代码

 

AsyncTask 类的生成,和调用:

  

//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); } });
 

 

界面初始化数据部分:

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) { } });

 

 

 

 

 

转载于:https://www.cnblogs.com/firecode/archive/2012/09/05/2672144.html

你可能感兴趣的文章
declare和typeset DEMO
查看>>
three.js 性能优化的几种方法
查看>>
《梦断代码》读书笔记(三)
查看>>
FreeMarker解析json数据
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
次序+“选择不重复的记录”(3)——最大记录
查看>>
Codeforces 450 C. Jzzhu and Chocolate
查看>>
[Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现
查看>>
ACdream 1115 Salmon And Cat (找规律&&打表)
查看>>
MFC中CString.Format的详细用法
查看>>
JSON、JSONP、Ajax的区别
查看>>
AngularJS学习篇(一)
查看>>
【转载】 IP实时传输协议RTP/RTCP详解
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
两个数组的交集II
查看>>
SQL常用语句
查看>>
最新免费视频放送【冒着被开除的风险】
查看>>
http://www.admin10000.com/document/6436.html
查看>>
Linux系统的数据写入机制--延迟写入
查看>>
css3动画——基本准则
查看>>