BaseAdapter教程(2) BaseAdapter的notifyDataSetChanged动态刷新
遇到了这麽一个需求,ListView滑到最底,然后会自动在底部加入新的Cell,实现动态刷新。
1. 首先,为ListView加上setOnScrollListener。
lvHomePostItem.setOnScrollListener(new AbsListView.OnScrollListener() {
private Integer scrollState;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
this.scrollState = scrollState;
switch (scrollState) {
// Not scrolling
case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
// go to last cell
if (view.getLastVisiblePosition() == (view.getCount() - 1) && totalAmountOfLvItem <= 20 ) {
addData();
}
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {}
});
2. addData()是调用了notifyDataSetChanged。而notifyDataSetChanged是回调ListView来刷新UI,实现动态刷新。
private Integer totalAmountOfLvItem = 0;
private Integer getExtraNumberOfPost = 2;
private String getHotPostByCursor;
private String getPostResult;
private List<PostDTO> postExtraDTOs = new ArrayList<PostDTO>();
private ArrayList<Bitmap> bitExtraMaps = new ArrayList<Bitmap>();
private void addData() {
popupLoadingWindow(); // Network thread
new Thread(new Runnable() {
@Override
public void run() { totalAmountOfLvItem = postAdapter.getCount(); // clear list
if ( !postExtraDTOs.isEmpty()) {
postExtraDTOs.clear();
} if ( !bitExtraMaps.isEmpty()) {
bitExtraMaps.clear();
} // get extra post
getHotPostByCursor = Configuration.getHotPostByCursor(totalAmountOfLvItem, getExtraNumberOfPost);
getPostResult = okhttp.getResponse(getHotPostByCursor);
postExtraDTOs = gsonTools.getPost(getPostResult);
totalAmountOfLvItem += getExtraNumberOfPost; // get extra bitmap
for ( int i = 0; i < postExtraDTOs.size(); i++ ) {
Bitmap temp = bitMap.returnBitMap(postExtraDTOs.get(i).getAbstractImg());
bitExtraMaps.add(temp);
} // UI thread
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() { // set extra post & bitmap into ListView Data
for ( int i = 0; i < postExtraDTOs.size(); i++ ) {
postHotDTOs.add(postExtraDTOs.get(i));
bitHotMaps.add(bitExtraMaps.get(i));
} postAdapter.notifyDataSetChanged();
lvHomePostItem.setSelection(postAdapter.getCount()-1); dismissPopupLoadingWindow();
}
}); }
}).start();
}
就这样实现动态刷新。
BaseAdapter教程(2) BaseAdapter的notifyDataSetChanged动态刷新的更多相关文章
- BaseAdapter教程(1) 最简单地使用BaseAdapter
Adapter就是适配器,而设计模式里也有Adapter Pattern. 而BaseAdapter就是设计模式里的思维,把一些不相关的东西放进去,经过适配器,最终都会出产同一样的东西. 就像Base ...
- Android中BaseAdapter的基本用法和加载自定义布局!
public class MainActivity extends Activity { ListView listView = null; @Override protected void onCr ...
- 第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter
第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter 1.BaseAdapter BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的 ...
- 扩展BaseAdapter实现不存储列表项的ListView
下面的实例将会通过扩展BaseAdapter来实现Adapter,扩展BaseAdapter可以取得对Adapter最大的控制权:程序要创建多个列表项,每个列表项的组件都由开发者来决定. 下面的布局文 ...
- 08 BaseAdapter 和ListView总结
第八天 ListView 列表视图 一,特点: >垂直滚动列表,是ViewGroup(容器),列表项使用Adapter填充 二,属性 > android:divider="@dr ...
- SimpleAdapter和Baseadapter填充listActivity-android学习之旅()
简介 SimpleAdapter的功能是能够为AbsListView提供复杂的数据,需要构造ListView 代码示例 package peng.liu.testview; import androi ...
- BaseAdapter
作者通过Java代码来实现布局,而我习惯通过.xml文件来实现,所以我对程序做了如下修改 MainActivity.java public class MainActivity extends Act ...
- android开发中的BaseAdapter之理解(引用自网络,总结的很好,谢谢)
android中的适配器(Adapter)是数据与视图(View)之间的桥梁,用于对要显示的数据进行处理,并通过绑定到组件进行数据的显示. BaseAdapter是Android应用程序中经常用到的基 ...
- Android ArrayAdapter,BaseAdapter,SimpleAdapter适配器绑定数据方法
/** * 2017-07-31.Book 类 */ public class Book { public String getName() { return name; } public void ...
随机推荐
- stm32h7 开发板学习
按键和 IO 之间连接一个 1K 电阻,可以防止当 IO 被配置为高电平输出的时候,按下按键,导致 VDD 和 GND 直接连通.
- Flink:动态表上的连续查询
用SQL分析数据流 越来越多的公司在采用流处理技术,并将现有的批处理应用程序迁移到流处理或者为新的应用设计流处理方案.其中许多应用程序专注于分析流数据.分析的数据流来源广泛,如数据库交易,点击,传感器 ...
- part8 vue内置标签keep-alive对网页性能优化
我们网页请求时候 我们点击路由切换 可以看network中数据请求 因为每次路由切换都会执行mounted钩子函数 我们这个函数中数据请求 //每次切换路由,页面都会重新渲染 在根组件中使用 路由切换 ...
- kill -HUP 什么意思?
参考 74.在DNS系统测试时,设named进程号是53,命令 D 通知进程重读配置文件.A kill –USR2 53 B kill –USR1 53 C kill -INT 63 D kill – ...
- nginx log 切割
/logs/nginx/*/*access.log { daily rotate 30 missingok dateext #compress notifempty sharedscripts pos ...
- Python自学之路---Day01
目录 Python自学之路---Day01 注释 单行注释 多行注释 print()函数 语法 参数 实例 input()函数 语法 参数 实例 查看Python的关键字 代码 变量与常量 变量 如何 ...
- Python说文解字_Python之多任务_05
问:在Py3.5之前yield表现非常好,在Py3.5之后为了将予以变得更加明确,就引入了async和await关键词用于定义原生的协议. 答:async和await原生协程: async def d ...
- PAT Advanced 1094 The Largest Generation (25) [BFS,DFS,树的遍历]
题目 A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level ...
- codeblocks无法找到编译器问题的三个原因
出现如下提示: 查看了网上的资料, 1.编译器选择错误 查看路径:setting→compiler Selected compiler选取你已经安装且准备使用的编译器. 2.工程创建时配置错误 查看路 ...
- jsp的appilication.getInitParameter()方法无法获取到值的问题
背景介绍 今天研究jsp的内置对象时发现,使用appilication.getInitParameter()从web.xml文件中获取值的时候,死活获取不到,折腾了将近一个小时,后来出现问题的原因却让 ...