项目开发之需要, 做一个ListView分页显示, 动态加载数据到ListView. 需求是: 每一次ListView显示20条数据, 当滚动条滑动到最后一条的时候, ListView会自动到后台请求数据并加载到ListView. 一开始, 没有思路, 后来到网上搜了下:步骤是这样的. 1. 在ListView的 OnScrollListener 事件中:
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
//Log.i(TAG, "获取第一个可见位置:" + listPos);
listPos = mListView.getSelectedItemPosition(); // ListPos记录当前可见的List顶端的一行的位置
}
}
然后, 在数据设置到ListView的adapter后 , 设置ListView的setSelection(listPos)方法;
这种方式虽然能够实现以上功能 ,但:效果不明显, 定位不准确, 而且ListView会给人一种刷新的感觉, 而不是异步后台加载数据.
后来,通过网上不断的搜索 , 终于找到了另一种比较合理的方法
1. 实例化ListView
//1. 获取ListView
mListView = getListView();
setupListHeader(true);
mListAdapter = new NewsListViewAdapter(this,
((Foursquared) getApplication()).getRemoteResourceManager());
//2. 设置mListView的适配器: adapter
mListView.setAdapter(mListAdapter);
2. ListView添加滑动事件:
// 添加滚动条滑动事件
mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
loadMoreGIF.setVisibility(View.VISIBLE);
if (mStateHolder.getIsRunningTask() == false) {
//mSearchTask 是一个继承了AysncTask的线程.向后台加载数据.
mSearchTask = new SearchTask(activity, query, sleepTimeInMs);
mSearchTask.execute();
}
}
}
});
3. 后台数据加载完之后, 将结果添加到Adapter. 然后调用: Adapter的notifyDataSetChanged()方法.
注意: 数据加载完, 并设置Adapter值后, 不不需要调用ListView.setAdapter(adapter).方法. 否则ListView会重新刷新一遍, 就不会有异步加载数据的效果. 只需修改adapter值之后, 调用notifyDataSetChanged()即可.
分享到:
相关推荐
在Android开发中,ListView是应用界面设计中非常常见的一种组件,它用于展示可滚动的、多行数据列表。本自学笔记将重点讲解如何在Android项目中创建并使用ListView,包括基本的设置、数据绑定和适配器的使用。 首先...
同时,这份笔记可能还会涵盖如何使用Adapter来连接数据源和ListView、RecyclerView等列表视图,实现数据的动态加载和滚动效果。 最后,"新版Android开发教程&笔记四--Dalvik ADB.pdf"讲解了Dalvik虚拟机和Android ...
"Android开发笔记5"专注于Real6410开发板的使用,旨在帮助开发者快速提升Android技术能力。本文将深入解析笔记中的关键知识点,包括Android的基础UI编程。 首先,让我们关注"read me.doc"。这个文档通常包含了项目...
本教程“新版Android开发教程 笔记7--基础UI编程1”着重于引导开发者掌握构建基本Android UI的基础知识。下面将详细阐述其中的关键知识点。 1. **Android布局(Layouts)**: Android提供了多种布局管理器,如线性...
在Android开发中,ListView是应用界面设计中非常常见的一种组件,它用于展示大量可滚动的数据列表。本学习笔记将深入探讨ListView的使用方法,并提供相关的源码示例,帮助开发者更好地理解和掌握ListView的精髓。 ...
《Android应用开发揭秘》读书笔记不仅是一份个人学习历程的记录,更是一部深入浅出的Android开发指南。本书籍及笔记覆盖了从基础知识到高级应用的广泛内容,为初学者和有经验的开发者提供了宝贵的资源。 ### ...
在Android开发中,ListView是一个非常常见的控件,用于展示大量数据列表。然而,为了提高性能和减少内存消耗,ListView引入了复用机制。本篇文章将深入解析ListView的复用机制,帮助开发者更好地理解和优化应用。 1...
Android 基础笔记是 Android 开发的入门知识点总结,涵盖了 Android 开发的基础知识点,从 Android 发展史到自定义 ContentProvider 的实现。 一、Android 发展史 Android 的发展史可以追溯到 2003 年,最初由 ...
在Android开发中,用户界面(UI)编程是至关重要的,因为它直接影响到用户的体验和应用程序的易用性。这篇笔记将深入探讨Android基础UI编程的关键概念和技术。以下是一些主要的知识点: 1. **布局(Layouts)**:...
Android Training是Google提供的一系列教程,旨在帮助开发者提升Android开发技能。这篇文章是Android Training的一部分,专门讲解了如何结合Navigation和ListView实现高效的用户导航。 4. **源码分析** 文章提供...
通过适配器(Adapter)将数据与视图绑定,可以动态加载和更新列表内容。 此外,事件监听和回调机制也是Android开发中的常见概念。在NoteBook中,开发者可能为按钮添加了OnClickListener,当用户点击按钮时触发相应...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。ListView的一个常见需求是实现下拉刷新功能,以便用户可以获取最新的数据。本教程将详细讲解如何在Android中实现ListView的下拉刷新功能,主要...
在Android开发中,ListView是一种常用的控件,用于显示可滚动的项目列表。在本篇Android学习笔记中,我们将探讨如何建立自己的ListView,即创建一个自定义的ListView子类,以便实现特定的UI样式和功能。这通常涉及到...
新版Android开发教程及笔记-完整版 《Android中文教程》中文版 《android基础教程合集》 Android实例教程 会员贡献索引贴 实用Android开发工具和资源精选 APK权限大全 - Android必懂知识 最无私的Android资料...
在Android开发中,ListView是一个非常重要的组件,常用于展示大量数据列表。它的高效性和可定制性使得它在各种应用中广泛应用。本篇笔记将深入探讨ListView的使用、自定义及优化,结合源码分析,帮助你更好地理解和...
综上所述,ListView是Android开发中不可或缺的一部分,熟练掌握其基本使用和优化技巧,能帮助开发者更好地处理大量数据的展示和交互。通过实践ListViewDemo项目,初学者可以加深对这些知识点的理解和应用。
【Android应用开发学习笔记】 Android应用开发是移动设备软件开发的重要组成部分,主要涉及四大组件、UI设计以及系统交互。本文将深入探讨这些关键知识点。 **一、Android四大组件** 1. **Activity(活动)** - ...
在Android移动应用开发中,ListView是一个非常重要的组件,它用于展示大量的列表数据,适用于数据项较多且需要滚动查看的情况。本篇文章将详细讲解ListView及其适配器的使用,包括基础用法、性能优化以及不同类型的...
在Android开发中,`ListView`是一种非常重要的UI组件,它能够显示一个可以滚动的列表,支持单选或多选模式。本节将详细介绍`ListView`的基本用法、自定义适配器以及一些实用的扩展技巧。 ##### 1. ListView基本概念...
项目可能有一个自定义的Adapter,用于将笔记数据加载到ListView或RecyclerView。 9. **Material Design**:遵循Google的Material Design指南,可以提供现代且一致的用户体验。项目可能应用了Material Design组件和...