- 浏览: 14566 次
- 性别:
- 来自: 成都
最近访客 更多访客>>
最新评论
-
mysfzj_web:
heroxuetao 写道学习一下
我也是才学的。。后面最后 ...
根据公司项目~学习搭建开发的框架(一) -
heroxuetao:
学习一下
根据公司项目~学习搭建开发的框架(一)
效果图
<1>
当前listview里的原始数据
<2>
当滑动到最低端时候,开始加载新数据,出现loading
<3>
新数据加载后显示
具体实现
写一个适配器,一般会自己继承,然后重新一些东西
public class MyAdapter extends ArrayAdapter<bean>{
private final LayoutInflater mInflater;
public MyAdapter(Context context, List<bean> apps) {
super(context, 0, apps);
mInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
bean bean = this.getItem(position);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item, parent, false);
}
TextView data = (TextView) convertView.findViewById(R.id.text);
data.setText(bean.getName());
return convertView;
}
}
activity加载数据,新数据一般是当你第一次默认显示的数据已经完全显示,然后滚轮拖动到屏幕下端时候加载,也就是
firstVisibleItem + visibleItemCount = totalItemCount的时候,此时才启动线程开始加载数据。
public class LoadActivity extends Activity {
private ListView lv = null;
ArrayList<bean> beans = new ArrayList<bean>();
MyAdapter adapter = null;
boolean isRefresh = true;
boolean isFirstRun = true;
private bean bean=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.refresh);
lv = (ListView) findViewById(R.id.listview);
lv.setOnScrollListener(new OnScrollListener() {
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
Log.i("v", "" + visibleItemCount);
Log.i("f", "" + firstVisibleItem);
Log.i("t", "" + totalItemCount);
//第一次进入时候,如果当前显示页面放不下第一次的所有数据,会分页显示
//就算滚轮到最低端,也不会加载的新的数据,只有当第一次数据显示完后才会刷新出现loading
//如果没有下面的判断,在你进入这个listview就会直接加载一次新数据,在这个例子里,比如你第一次加载的事40条数据,会变成45条
if (isFirstRun) {
isFirstRun = false;
return;
}
if ((firstVisibleItem + visibleItemCount) == totalItemCount
&& isRefresh) {
isRefresh = false;
//loading条显示出来
findViewById(R.id.loadtext).setVisibility(View.VISIBLE);
new LoadThread().start();
}
}
public void onScrollStateChanged(AbsListView view, int scrollState) {
});
adapter = new MyAdapter(this.getBaseContext(), getFirstBean());
lv.setAdapter(adapter);
}
//第一次加载的数据
private ArrayList<bean> getFirstBean(){
bean =new bean();
for (int i = 0; i < 20; i++) {
bean = new bean();
bean.setName("Json " + i + " 号");
beans.add(bean);
}
return beans;
}
//需要加载的新数据
private void refreshListView() {
if (beans == null || adapter == null) {
return;
}
bean bean = null;
for (int i = 0; i < 5; i++) {
bean = new bean();
bean.setName("新数据: " + i);
beans.add(bean);
}
}
Handler _handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
adapter.notifyDataSetChanged();
//当数据已经改变后loading条不显示出来
findViewById(R.id.loadtext).setVisibility(View.INVISIBLE);
isRefresh = true;
break;
case 2:
}
}
};
@Override
public void run() {
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//传给handler处理
_handler.sendEmptyMessage(1);
}
}
}
发表评论
-
根据公司项目~搭建开发的框架(四)-附全部源码
2012-01-10 15:45 704用这个搭建框架写了个新浪微博的Oauth认证。 实现了Oau ... -
根据公司项目~搭建开发的框架(三)
2012-01-10 15:36 612效果图 初始 输入数据 Add ... -
根据公司项目~搭建开发的框架(二)
2012-01-10 15:34 772创建数据库工具类 SharedPrefe ... -
根据公司项目~学习搭建开发的框架(一)
2012-01-10 15:32 1143今天主要是搭建 ... -
深入理解AndroidManifest.xml
2011-12-29 14:50 835一、关于AndroidManifest.xml Andr ... -
Android-sharedUserId
2011-12-29 14:36 696Android给每个APK进程分配 ... -
从网上获取图片
2011-12-23 10:55 610效果展示 输入图片地址,点击butto ... -
Android-线程笔记
2011-12-23 10:50 14011. Android进程 ... -
Android-MVC
2011-12-23 10:34 1067Android-MVC 模型(Model)视图(Vi ... -
android include 使用
2011-12-20 11:00 2328在main.xml中包含aaa.xml,bbb.x ... -
项目中ViewFlipper 的使用
2011-12-20 10:14 796效果展示 点击右下角的btn 在同一个 ... -
activity之间的切换效果(搜集)
2011-12-20 10:12 1386主要是两个activity之间的相互切换,所有有2个ac ... -
项目中遇到的一个问题-checkbox
2011-12-20 09:12 675模拟下在项目中出现的问题 <1>选中 ...
相关推荐
ListView动态加载数据分页,使用Handler+线程和AsyncTask两种方法
友们在使用ListView的过程中,是否考虑过加载大量的数据时,如何提高显示速度? 朋友你是不是也想对其优化,形成动态加载? 如果你也有过这样的想法,那么我们是同路人! 通过查看ListView的API,我们似乎找不...
listview实现动态加载数据,值得学习
C#中向listView中动态插入数据,代码清晰,看了你就明白了,希望对你有帮助。
在Android的ListView中动态添加数据
本文实例讲述了Android开发中Listview动态加载数据的方法。分享给大家供大家参考,具体如下: 最近在研究网络数据加载的问题,比如我有几百,甚至上千条数据,这些数据如果一次性全部加载到arraylist,然后再加载到...
Listview动态增加与删除控件条目,条目内容可编辑
android 实现listview动态下拉刷新,动态加载数据 可以避免一次数据加载过多
第三章上机作业1234567891234567890-=3456784576879875
把viewpager+listview做成了一个工具类,方便调用。实现Page竖排显示并滑动。方便动态加载数据。
网上下载的关于动态加载数据的,都是很简单,离实际使用还是存在差距。我自己写了一个,BaseAdapter也是自己定义的。 很实用的关于数据动态加载
可以拉动滚动条动态的加载数据,或则滚动鼠标动态的加载数据
listview加载网络数据
android 动态添加数据到listview 1. 引言: 为了提高ListView的效率和应用程序的性能,在Android应用程序中不应该一次性加载ListView所要显示的全部信息,而是采取分批加载策略,随着用户的滑动,动态的从后台加载...
Listview分页加载数据.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
ListView添加数据后动态刷新Demo
动态加载ListView 且 滑动过程中显示列表中首字的提示信息
原创博客中:”那些复杂的列表总要弄个清楚——(一)ListView动态添加项 “的代码
Android ListView页面加载数据显示更多