android listview grid 滚动加载实例
来源:互联网 发布:sqlite linux 安装 编辑:程序博客网 时间:2024/06/08 18:16
/**adapter **/
SimpleAdapter
sa = new SimpleAdapter(context, data, R.layout.grid_item_for_contact,
new String[] { "photo", "employeesName" }, new int[] { R.id.iv_head, R.id.name }// ,//80
);
// 滚动监听
listview.setOnScrollListener(new OnScrollListener() {
private int firstVisibleItem;
private int visibleItemCount;
private int totalItemCount;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
Log.v(TAG, "scrollState:"
+ scrollState
+ (scrollState == OnScrollListener.SCROLL_STATE_IDLE ? "OnScrollListener.SCROLL_STATE_IDLE"
: scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL ? "OnScrollListener.SCROLL_STATE_TOUCH_SCROLL"
: "OnScrollListener.SCROLL_STATE_IDLE"));
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
boolean needDownLoad = false; // 判断是否有数据需要刷新
for (int i = 0; i < visibleItemCount; i++) {
Map map = (Map) view.getItemAtPosition(i + firstVisibleItem);
if (map == null || map.get(FIELD_DONG) == null || !Boolean.valueOf(map.get(FIELD_DONG).toString())) {
needDownLoad = true;
break;
}
}
if (needDownLoad) {
Log.v(TAG, "updateTask" + updateTask);
if (updateTask != null && updateTask.getStatus() == AsyncTask.Status.RUNNING) {
updateTask.cancel(true);
}
updateTask = new CreateContactGridViewTask("", firstVisibleItem, visibleItemCount);
updateTask.execute(null);
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
Log.v(TAG, "firstVisibleItem:" + firstVisibleItem + "visibleItemCount:" + visibleItemCount + "totalItemCount:"
+ totalItemCount);
//记录最后此滚动位置
this.firstVisibleItem = firstVisibleItem;
this.visibleItemCount = visibleItemCount;
this.totalItemCount = totalItemCount;
}
});
//加载任务
// 创建listview任务 线程
private class CreateContactGridViewTask extends AsyncTask<Integer, Void, Map> {
private final String name;
private final int firstItem;
private final int itemsCount;
public CreateContactGridViewTask(String name, int firstItem, int itemsCount) {
super();
this.name = name;
this.firstItem = firstItem;
this.itemsCount = itemsCount;
}
public CreateContactGridViewTask() {
name = "";
firstItem = 0;
itemsCount = StaticValues.DEFAULTROWS;//使用默认值
}
@Override
protected void onPreExecute() {
// 显示进度条
if (context instanceof BaseActivity && firstItem == 0)
((BaseActivity) context).showProgress_panel();
}
@Override
protected Map doInBackground(Integer... params) {
// TODO Auto-generated method stub
// 计算分页数据
int pageIndex = firstItem / itemsCount + 1;
//查询远程
Map result = NetWorkService.queryEmployeesInfoByKeyWords(name, pageIndex, itemsCount);
return result;
}
@Override
protected void onPostExecute(Map result) {
if (context instanceof BaseActivity)
((BaseActivity) context).hideProgress_panel();
// 停止刷新按钮
hc.stopAnmiation();
if (NetWorkResultHandler.handleError(context, ContactGridView.this, result)) {
// ContactGridView.this.setLayoutAnimation(getLayoutAnimation().)
//获取加载到的数据
List<Map<String, Object>> newData = NetWorkResultHandler.getDataFromResult(result);
PageInfo pageInfo = NetWorkResultHandler.getPageInfoFromResult(result);
if (sa.getCount() != pageInfo.getTotalRow()) { //当总记录数步相同时
data.removeAll(data);
for (int i = 0; i < pageInfo.getTotalRow(); i++) {
data.add(new HashMap()); //先填满整个数据源
}
}
for (int j = 0; j < itemsCount; j++) { //找出未加载的替换
Map map = newData.get(j);
map.put(FIELD_DONG, true);
Map replaceData = (Map) data.get(firstItem + j);
if (replaceData.get(replaceData) != null && Boolean.valueOf(replaceData.get(replaceData).toString())) {
} else
data.set(firstItem + j, map);
}
//
sa.notifyDataSetChanged();
}
}
}
/** 新手自学笔记 欢迎指点
- android listview grid 滚动加载实例
- 今天分享一个Android ListView滚动进度加载的实例
- android listView 滚动加载显示
- Android ListView 滚动加载数据
- Android ListView 滚动加载数据
- android ListView 滚动加载item
- ListView 滚动翻页/滚动加载(类似Android Market的列表)
- Android ScrollView滚动 + ListView无滚动条加载全部内容
- ListView 实现像Android Market那样 分页加载 滚动加载
- ListView 实现像Android Market那样 分页加载 滚动加载
- ListView 滚动翻页/滚动加载
- ListView滚动翻页/滚动加载
- [Android]ListView 滚动翻页/滚动加载(类似QQ空间滚动加载页面)
- ListView 滚动加载数据
- ListView滚动加载(类似Android Market的列表)
- android listview 滚动时异步加载图片的问题
- android Listview下拉滚动时自动加载数据
- Android之ListView滚动到底后自动加载数据
- 创业者怎样制定可行的战略
- 删除冗余约束
- java日期处理二(Timestamp)
- 揭开Socket编程的面纱
- 求职者所应具备的素质
- android listview grid 滚动加载实例
- Tomcat 最简单配置 为何那么麻烦,史上最简单的配置
- JQuery操作XML的方法
- BDC 3种方法综述
- aspx文件的样式在IE6显示混乱的三种解决方法
- ajax的自动完成标签(<ajax:autocomplete />)
- the program of the icisc 2011
- Installing GRUB using grub-install
- solr的配置及使用