最新内容建议直接访问原文:滚动到底部加载更多及下拉刷新listview的使用
本文主要介绍可同时实现下拉刷新及滑动到底部加载更多的ListView的使用。
该ListView优点包括:a. 可自定义下拉响应事件(如下拉刷新) b.可自定义滚动到底部响应的事件(如滑动到底部加载更多) c.可自定义丰富的样式 d.高效(若下拉样式关闭不会加载其布局,同listView效率一致) e. 丰富的设置。
本文可运行APK地址可见TrineaAndroidDemo.apk,可运行代码地址可见DropDownListViewDemo,效果图如下:
1、引入公共库
引入TrineaAndroidCommon@Github(欢迎star和fork^_^)作为你项目的library(如何拉取代码及添加公共库),或是自己抽取其中的DropDownListView@Github部分使用。
2、在layout中定义
将布局中的ListView标签换成cn.trinea.android.common.view.DropDownListView标签
并加上自定义属性的命名空间xmlns:listViewAttr=”http://schemas.android.com/apk/res/cn.trinea.android.demo”,其中cn.trinea.android.demo需要用自己的包名替换。如何自定义属性及其命名空间可见本文最后。xml代码如下:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:listViewAttr="http://schemas.android.com/apk/res/cn.trinea.android.demo" android:layout_width="match_parent" android:layout_height="match_parent" > <cn.trinea.android.common.view.DropDownListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="false" android:paddingBottom="@dimen/dp_40" listViewAttr:isDropDownStyle="true" listViewAttr:isOnBottomStyle="true" listViewAttr:isAutoLoadOnBottom="true" /> </RelativeLayout>
DropDownListView自定义了三个boolean属性
<declare-styleable name="drop_down_list_attr"> <attr name="isDropDownStyle" format="boolean" /> <attr name="isOnBottomStyle" format="boolean" /> <attr name="isAutoLoadOnBottom" format="boolean" /> </declare-styleable>
isDropDownStyle表示是否允许下拉样式,java代码中可自定义下拉listener,表示需要完成的任务
isOnBottomStyle表示是否允许底部样式,java代码中可自定义滚动到底部的listener,表示需要完成的任务
isAutoLoadOnBottom表示是否允许滚动到底部时自动执行对应listener,仅在isOnBottomStyle为true时有效
PS:如果isDropDownStyle或isOnBottomStyle为false,并不会加载对应的布局,所以性能同ListView一样。
3、在Java类中调用
通过setOnDropDownListener设置下拉的事件,不过需要在事件结束时手动调用onDropDownComplete恢复状态(注意需要在adapter.notifyDataSetChanged();后面调用)
通过setOnBottomListener设置滚动到底部的事件,不过需要在事件结束时手动调用onBottomComplete恢复状态,示例代码如下:
/** * DropDownListViewDemo * * @author Trinea 2013-6-1 */ public class DropDownListViewDemo extends BaseActivity { private LinkedList<String> listItems = null; private DropDownListView listView = null; private ArrayAdapter<String> adapter; private String[] mStrings = { "Aaaaaa", "Bbbbbb", "Cccccc", "Dddddd", "Eeeeee", "Ffffff", "Gggggg", "Hhhhhh", "Iiiiii", "Jjjjjj", "Kkkkkk", "Llllll", "Mmmmmm", "Nnnnnn", }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState, R.layout.drop_down_listview_demo); listView = (DropDownListView)findViewById(R.id.list_view); // set drop down listener listView.setOnDropDownListener(new OnDropDownListener() { @Override public void onDropDown() { new GetDataTask(true).execute(); } }); // set on bottom listener listView.setOnBottomListener(new OnClickListener() { @Override public void onClick(View v) { new GetDataTask(false).execute(); } }); listItems = new LinkedList<String>(); listItems.addAll(Arrays.asList(mStrings)); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems); listView.setAdapter(adapter); } private class GetDataTask extends AsyncTask<Void, Void, String[]> { private boolean isDropDown; public GetDataTask(boolean isDropDown){ this.isDropDown = isDropDown; } @Override protected String[] doInBackground(Void... params) { try { Thread.sleep(1000); } catch (InterruptedException e) { ; } return mStrings; } @Override protected void onPostExecute(String[] result) { if (isDropDown) { listItems.addFirst("Added after drop down"); adapter.notifyDataSetChanged(); // should call onDropDownComplete function of DropDownListView at end of drop down complete. SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss"); listView.onDropDownComplete(getString(R.string.update_at) + dateFormat.format(new Date())); } else { listItems.add("Added after on bottom"); adapter.notifyDataSetChanged(); // should call onBottomComplete function of DropDownListView at end of on bottom complete. listView.onBottomComplete(); } super.onPostExecute(result); } } }
4、高级接口设置
5、样式设置(自定义header和footer信息)
见原文:滚动到底部加载更多及下拉刷新listview的使用
www.trinea.cn
相关推荐
在滑动到底部时,使用类似自定义下拉刷新的逻辑触发加载更多操作。 总的来说,自定义ListView下拉刷新和上拉加载更多虽然涉及到一些复杂的交互逻辑,但通过合理的设计和第三方库,可以大大简化开发过程。在实际项目...
总结起来,"ListView下拉刷新,到底部自动加载更多"是Android应用中常见的功能实现,涉及到SwipeRefreshLayout的使用、ListView的滚动监听、分页加载策略以及异步数据加载等多个知识点,是提升用户交互体验的重要...
在Android开发中,自定义ListView实现下拉刷新和加载更多的功能是常见的需求,尤其是在构建具有数据流滚动和实时更新的应用程序时。这个"自定义ListView实现下拉刷新+加载更多功能Demo"旨在帮助开发者理解如何集成...
1. **基本概念**:加载更多是指当用户滚动到底部时,自动加载更多的数据到ListView中。这种设计在内容无限滚动的应用中尤为适用。 2. **实现方式**: - **OnScrollListener**:通过给ListView添加一个...
当用户滚动到ListView的底部时,系统会自动加载更多的数据,通常是通过添加更多项到ListView的末尾来实现。这种方式适用于分页加载数据的情况,如电商应用的商品列表。 实现这两个功能,我们可以自定义一个继承自...
然而,随着用户交互体验的提升,单纯的ListView已经不能满足需求,下拉刷新和上拉加载更多的功能应运而生。这两个特性使得用户可以动态地更新列表数据,提升用户体验。 一、下拉刷新(Pull-to-Refresh) 下拉刷新...
这些功能使得用户可以在滚动到列表顶部时更新数据(下拉刷新),或者在滚动到底部时加载更多数据(上拉加载更多)。这种设计常见于许多社交媒体应用,如微博。 实现这个功能,我们可以利用开源库,比如...
当用户滚动到ListView的底部时,自动加载更多数据的功能通常被称为“无限滚动”或“下拉加载更多”。这种功能可以提升用户体验,避免用户手动翻页。下面我们将详细讨论如何在Android中实现这个功能。 首先,你需要...
接下来是上拉加载(Load More),它允许用户在滚动到ListView底部时加载更多数据。实现这一功能通常需要自定义适配器(Adapter)和监听ListView的滚动事件。我们可以监听AbsListView的OnScrollListener,当用户滚动...
本文将深入探讨如何使用QML实现类似京东APP的下拉刷新和上拉加载更多的功能。 首先,我们要了解`ListView`是QML中的核心组件之一,它允许我们创建可滚动列表,展示大量数据。在实现下拉刷新和上拉加载功能时,`...
在Android开发中,"下拉刷新"和"加载更多"是常见的列表滚动交互功能,用于更新数据或加载更多内容。通常,ListView是实现这些功能的传统选择,但由于ListView自身的一些限制和问题,开发者可能会选择其他解决方案。...
上拉加载更多是在用户滚动到ListView底部时,自动加载更多的数据,而下拉刷新则是用户在顶部拉动ListView时,刷新当前显示的数据。 要实现自绘ListView,我们需要继承自ListView并重写其关键方法。自绘主要涉及`...
当用户滚动到底部时,加载更多数据。首先,我们需要定义一个变量记录是否正在加载更多数据,然后在滚动监听器中判断: ```java ListView listView = findViewById(R.id.list_view); listView.setOnScrollListener...
然而,为了提供更好的用户体验,开发者经常需要为ListView添加下拉刷新和上拉加载更多的功能。本文将详细讲解如何实现自定义的ListView,以实现这两种功能。 首先,我们来看标题中的"自定义listView下拉刷新"。下拉...
2. 上拉加载更多:上拉加载更多是在用户滚动到ListView底部时加载更多数据的功能。实现过程类似,但监听的是底部触达事件: - 添加一个可滚动的底部视图,包含加载提示文本。 - 在OnScrollListener中检查是否到达...
2. 检测底部:监听ListView的滚动事件,当用户滚动到列表底部时,触发加载更多数据的逻辑。 3. 加载数据:在加载更多数据的方法中,向服务器请求新的数据,并在回调中将新数据添加到Adapter中。 4. 更新UI:数据...
当用户滚动到ListView的底部时,自动加载更多的数据功能通常被称为“无限滚动”或“下拉加载更多”。这个特性提高了用户体验,避免了用户手动刷新或点击加载按钮来获取新数据的不便。下面将详细解释如何实现ListView...
在给定的标题和描述中,我们关注的是一个优化过的ListView,它包含了几个关键特性:下拉刷新、上拉加载更多以及条目滚动时的动画效果。这些特性极大地提升了用户体验,使得用户在浏览长列表时更加流畅和便捷。 首先...
上拉加载更多是指当用户滚动到ListView的底部时,自动加载并显示更多的数据。这个功能通常用在需要无限滚动或者分页加载的场景中。实现上拉加载更多,一般分为以下步骤: 1. 监听ListView的滚动事件:通过`...
当用户滚动到底部时,触发加载更多数据的逻辑。这通常通过监听ListView的滚动状态和当前位置来实现。一旦检测到用户已经滚动到列表的最后,就调用加载更多数据的接口。 4. **分页加载**: 分页加载是优化大数据量...