Android 高级UI设计笔记09:Android如何实现无限滚动列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android 高级UI设计笔记09:Android如何实现无限滚动列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2350字,纯文字阅读大概需要4分钟。
内容图文
ListView和GridView已经成为原生的Android应用实现中两个最流行的设计模式。目前,这些模式被大量的开发者使用,主要是因为他们是简单而直接的实现,同时他们提供了一个良好,整洁的用户体验。
对于ListView和GridView一个共同基本要求是:当用户向下滚动时可以动态加载数据支持无限滚动。下面教你如何在自己的应用中实现这个特性。
具体流程如下:
(1)我们需要的一个主要组件是InfiniteScrollListener类,它实现了OnScrollListener接口。让我们直接看下面这个类的代码实现:
InfiniteScrollListener.java
1 public abstract class InfiniteScrollListener implements AbsListView.OnScrollListener { 2privateint bufferItemCount = 10; 3privateint currentPage = 0; 4privateint itemCount = 0; 5privateboolean isLoading = true; 6 7public InfiniteScrollListener(int bufferItemCount) { 8this.bufferItemCount = bufferItemCount; 9 } 1011publicabstractvoid loadMore(int page, int totalItemsCount); 1213 @Override 14publicvoid onScrollStateChanged(AbsListView view, int scrollState) { 15// Do Nothing16 } 1718 @Override 19publicvoid onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount){ 20if (totalItemCount < itemCount) { 21this.itemCount = totalItemCount; 22if (totalItemCount == 0) { 23this.isLoading = true; 24 } 25 } 2627if (isLoading && (totalItemCount > itemCount)) { 28 isLoading = false; 29 itemCount = totalItemCount; 30 currentPage++; 31 } 3233if (!isLoading && (totalItemCount - visibleItemCount)<=(firstVisibleItem + bufferItemCount)) { 34 loadMore(currentPage + 1, totalItemCount); 35 isLoading = true; 36 } 37 } 38 }
(2)添加到事件到ListView中:
YourActivity.java
// Attach the listener to the AdapterView onCreate yourListView.setOnScrollListener(new InfiniteScrollListener(5) { @Override publicvoid loadMore(int page, int totalItemsCount) { List<HashMap<String, String>> newData = loader.loadData(); dataList.addAll(newData); adapter.notifyDataSetChanged(); } });
如上,我们已经将这个类作为抽象类,这是一个很好的设计。我们的InfiniteScrollListener类实现了onScroll()方法,但是没有实现loadMore(),而是又给实现类来实现。
onScroll()方法在我们滚动时,程序会自动调用。所以我们推荐在这个方法里,不要进行过重的处理和数据计算,因为滚动是很频繁,这个方法调用也是很频繁的。
为了实现这个效果,我们只需要在实现InfiniteScrollListener,并将这个实现类设置给ListView/GridView的setOnScrollListener()方法,就像是第二个代码片段的匿名类。
我们实现了InfiniteScrollListener类,我们也需要实现loadMore()方法,在这个方法里,我们可以给ListView/GridView添加Item,并通过notifyDataSetChanged()通知ListView/GridView数据发生改变。当然我们可以手动添加本地数据,也可以从数据库或者服务端来Load更多的数据。
这就是我们在Android中实现的在ListView/GridView的可以无限滚动的所作的。对于有大量信息,ListView/GridView无疑有着很好的出处用户体验。
原文:http://www.cnblogs.com/hebao0514/p/5223554.html
内容总结
以上是互联网集市为您收集整理的Android 高级UI设计笔记09:Android如何实现无限滚动列表全部内容,希望文章能够帮你解决Android 高级UI设计笔记09:Android如何实现无限滚动列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。