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 ...
随机推荐
- ansible shell 之运行后台程序
最近在使用ansible shell模块启动一个shell编写的脚本,该脚本主要功能式加载java的classpath并在后台运行这个java程序. 该脚本在linux shell中可以正常启动和停止 ...
- C语言备忘录——向上取整
众所周知,C语言的取整方式是向下取整,昨天老师留了一道思考题,问我们C语言怎么向上取整,当时我第一反应就是ceil(),老师说不能用if……else之类的,函数也不行.当时想了想没事不用就不用,去ma ...
- 51nod1007:正整数分组 DP
1007 正整数分组 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 ...
- XML--XML Schema Definition(四)
参考 http://www.w3school.com.cn/schema/index.asp XSD 复合类型指示器 通过指示器,我们可以控制在文档中使用元素的方式.有七种指示器: Order 指示器 ...
- vector删除指定元素
#pragma once #include "stdafx.h" #include<windows.h> #include <vector> #includ ...
- 瑞士军刀DLib的VS2015编译
Dlib的官方解释是: Dlib is a modern C++ toolkit containing machine learning algorithms and tools for creati ...
- Ubuntu hive 安装过程中遇到的一些问题
环境:Ubuntu14.04 Hadoop3.2.0 MySQL5.7 hive2.3.6 安装步骤:安装hive.MySQL并进行配置 安装过程参照:Ubuntu安装hive,并配置mysql作为元 ...
- POJ 3659 再谈树形DP
Cell Phone Network Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5325 Accepted: 188 ...
- 生成随机数(Random类)和获取用户输入(Scanner类)
生成指定范围内的随机数 Math.random() 生成随机数,随机数在0到1之间,类型是 double. public class randCase { public static void mai ...
- 关于gc中对象回收算法的认识
之前学习java时,笔者看到很多学习资料说,gc判断object存活与否的算法是:给对象添加一个引用计数器,每当有一处地方引用它时,计数器值就加1,当引用失效时,计数器值就减1,当对象计数清零时,对象 ...