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 ...
随机推荐
- 吴裕雄--天生自然 JAVASCRIPT开发学习:switch 语句
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- POJ 1325 && 1274:Machine Schedule 匈牙利算法模板题
Machine Schedule Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12976 Accepted: 5529 ...
- Mac OS 终端利器 iTerm2配置大全
之前一直使用 Mac OS 自带的终端,用起来虽然有些不太方便,但总体来说还是可以接受的,是有想换个终端的想法,然后今天偶然看到一个终端利器 iTerm2,发现真的很强大,也非常的好用,按照网上配置了 ...
- 9.scrapy pycharm调试小技巧,请求一次,下次直接调试,不必每次都启动整个爬虫,重新请求一整遍
pycharm调试技巧:调试时,请求一次,下次直接调试,不必每次都启动整个爬虫,重新请求一整遍 [用法]cmd命令运行:scrapy shell 网址 第一步,cmd进行一次请求: scrapy sh ...
- visualVM远程监控jetty
1.打开本体bin/visualvm 2.添加远程主机 3.启动应用,使用以下方式 java -Djava.rmi.server.hostname=远程IP地址 -Dcom.sun.managemen ...
- 和我一起从0学算法(C语言版)(三)
第二章 暴力求解(枚举法) 第一节 小学奥数题-程序求解 观察下面的加法算式: 祥 瑞 生 辉 + 三 羊 献 瑞 ------------------- 三 羊 生 瑞 气 ...
- Linux-异步IO
1.何为异步IO (1).几乎可以这么认为:异步IO就是操作系统用软件实现的一套中断响应系统. (2).异步IO的工作方法:我们当前进程注册一个异步IO事件(使用signal注册一个信号SIGIO的处 ...
- linux 解压命令总结
常用Linux 命令: [转自]https://www.jianshu.com/p/ca41f32420d6 解压缩 .tar 解包:tar xvf FileName.tar 打包:tar cvf F ...
- 吴裕雄--天生自然ShellX学习笔记:Shell 流程控制
和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { search(q); ...
- [原]排错实战——解决Tekla通过.tsep安装插件失败的问题
原总结调试排错troubleshootteklaprocess monitorsysinternals 缘起 最近同事使用.tsep安装Tekla插件的时候,Tekla提示该插件已经存在了,需要卸载后 ...