千家信息网

如何实现下拉刷新及滑动到底部加载更多的ListView

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,小编给大家分享一下如何实现下拉刷新及滑动到底部加载更多的ListView,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!本文
千家信息网最后更新 2025年11月12日如何实现下拉刷新及滑动到底部加载更多的ListView

小编给大家分享一下如何实现下拉刷新及滑动到底部加载更多的ListView,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

本文主要介绍可同时实现下拉刷新及滑动到底部加载更多的ListView的使用。

该ListView优点包括:a. 可自定义下拉响应事件(如下拉刷新) b.可自定义滚动到底部响应的事件(如滑动到底部加载更多) c.可自定义丰富的样式 d.高效(若下拉样式关闭不会加载其布局,同listView效率一致) e. 丰富的设置。

本文可运行APK地址可见TrineaAndroidDemo.apk,可运行代码地址可见DropDownListViewDemo@Google Code,效果图如下:

1、引入公共库

引入TrineaAndroidCommon@GoogleCode作为你项目的library,或是自己抽取其中的DropDownListView部分使用

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代码如下:

       

DropDownListView自定义了三个boolean属性

                

isDropDownStyle表示是否允许下拉样式,java代码中可自定义下拉listener,表示需要完成的任务

isOnBottomStyle表示是否允许底部样式,java代码中可自定义滚动到底部的listener,表示需要完成的任务

isAutoLoadOnBottom表示是否允许滚动到底部时自动执行对应listener,仅在isOnBottomStyle为true时有效

PS:如果isDropDownStyle或isOnBottomStyle为false,并不会加载对应的布局,所以性能同ListView一样

3、在Java类中调用

通过setOnDropDownListener设置下拉的事件,不过需要在事件结束时手动调用onDropDownComplete恢复状态

通过setOnBottomListener设置滚动到底部的事件,不过需要在事件结束时手动调用onBottomComplete恢复状态,示例代码如下:

/**  * DropDownListViewDemo  *   * @author Trinea 2013-6-1  */ public class DropDownListViewDemo extends BaseActivity {     private LinkedList   listItems = null;     private DropDownListView     listView  = null;     private ArrayAdapter 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();         listItems.addAll(Arrays.asList(mStrings));         adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, listItems);         listView.setAdapter(adapter);     }     private class GetDataTask extends AsyncTask {         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"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

下拉 事件 更多 代码 样式 属性 布局 篇文章 任务 内容 地址 手动 标签 状态 空间 运行 高级 一致 三个 不怎么 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网吧服务器装安全管家 广电网络技术研究院 软件开发工程师需要技能 无线传感器网络技术的组成 北京通信软件开发设施检测中心 创建关系数据库表格的sql命令 网络安全和信息化 新媒体 网络安全检测包含哪些 服务器建设项目经理年薪 联想服务器风扇转一下停一下 网络安全海报好看 上海夺畅网络技术有限公司融资 金蝶erp如何连接数据库 嵌入式软件开发好找工作吗 深圳运维服务软件开发 深圳市星月网络技术有限公司 客户机服务器网 软件开发一般指什么 网络存储服务器怎么更换网卡 经济治理数据库成因 网络技术带给我们的影响 网络安全产业园是什么意思 学软件开发应该是什么性格 网络安全法治宣传教育内容 app软件开发程序师招聘 安阳华宇万维网络技术有限公司 软件开发新员工转正答辩 网络安全法涉及网吧开办 搜狗快排软件开发聚顶科技 软件开发需要哪些能力
0