android开发(3):列表listview的实现 | 下拉刷新

时间:2022-09-17 12:25:17

APP里面的列表太常用了,系统提供的listview或grideview可以做到。另外,我希望这个列表能够下拉时触发刷新,于是考虑使用封装了这个功能的开源项目,这里介绍这个:
https://github.com/Yalantis/Phoenix

这是一个支持下拉刷新的控件,里面包括了ListView。

(1)引入下拉刷新库

同样,先引入这个库,在app/build.gradle的dependencies中增加一行:

implementation 'com.yalantis:phoenix:1.2.3'

(2)xml中设计下拉刷新控件

然后在界面中使用这个控件,比如“知音”这个APP是在Fragment中使用,部分xml是这样的:
android开发(3):列表listview的实现 | 下拉刷新

对于它的使用,你也可以参考它在github上的说明。

(3)代码中使用下拉刷新控件

在代码中,处理触发刷新的事件:
android开发(3):列表listview的实现 | 下拉刷新

至此,界面就出现了一个能够下拉刷新的控件。但是,数据(包括刷新出来的数据)最终要在ListView上显示出来,所以,下一步就是使用ListView。

(4)使用ListView来显示内容

跟iOS的tableview一样,ListView也是由一个个cell(item)组成的,需要设计这个cell怎么显示,于是,可以写一个xml,比如叫tianya_listcell.xml:
android开发(3):列表listview的实现 | 下拉刷新
android开发(3):列表listview的实现 | 下拉刷新
android开发(3):列表listview的实现 | 下拉刷新

这个xml是cell显示的样式,除了样式,还要有内容。ListView从适配器取内容,所以要写一个适配器类来提供内容(重写某个方法)。

先定义一个内容类,这里简单演示,只设置一个图片。定义的类是这样的:
android开发(3):列表listview的实现 | 下拉刷新

最终要使用这个内容类,生成一个list,再设置给listview的适配器。

然后,写listview的适配器,由它提供绘制内容:
android开发(3):列表listview的实现 | 下拉刷新
android开发(3):列表listview的实现 | 下拉刷新

最后,使用listview:
android开发(3):列表listview的实现 | 下拉刷新

总体的思路是,listview向adapter询问绘制多少个item(所以要给adapter设置好数据列表),再问adapter索要绘制的view(这个view从xml中生成,就是一个item),我们可以重写这个getView的方法,从而控制显示什么样的item(xml定义了布局,除了布局,还要设置具体的显示内容,就在这个函数里面设置)。

演示的效果是这样的:
android开发(3):列表listview的实现 | 下拉刷新

android开发(3):列表listview的实现 | 下拉刷新的更多相关文章

  1. ListView封装实现下拉刷新和上拉加载(方式2)(转载)

    转自:http://blog.csdn.net/jdfkldjlkjdl/article/details/70229465 这次使用的是系统的SwipeRefreshLayout实现下拉刷新,和设置L ...

  2. 【Android - 自定义View】之自定义可下拉刷新或上拉加载的ListView

    首先来介绍一下这个自定义View: (1)这个自定义View的名称叫做 RefreshableListView ,继承自ListView类: (2)在这个自定义View中,用户可以设置是否支持下拉刷新 ...

  3. react-native ListView 封装 实现 下拉刷新/上拉加载更多

    1.PageListView 组件封装 src/components/PageListView/index.js /** * 上拉刷新/下拉加载更多 组件 */ import React, { Com ...

  4. android新闻项目、饮食助手、下拉刷新、自定义View进度条、ReactNative阅读器等源码

    Android精选源码 Android仿照36Kr官方新闻项目课程源码 一个优雅美观的下拉刷新布局,众多样式可选 安卓版本的VegaScroll滚动布局 android物流详情的弹框 健身饮食记录助手 ...

  5. Android开发 - 下拉刷新和分段头悬停列表

    项目源码 本文所述项目已开源,源码地址 为什么做PullToRefresh-PinnedSection-ListView 前段时间因为项目需求,需要在Android中对ListView同时增加下拉刷新 ...

  6. Android 它们的定义ListView实现底部和页下拉刷新刷新的顶

    在项目开发.由于数据量过大,寻呼需要加载或下拉刷新.为了缓解长期等待-time负载.这个博客的评论中被自己的定义实例ListView实现底部的下拉刷新页面正在加载结果和顶部. 其效果图: 一.List ...

  7. 【转载】Android中ListView下拉刷新的实现

    在网上看到一个下拉刷新的例子,很的很棒,转载和更多的人分享学习 原文:http://blog.csdn.net/loongggdroid/article/details/9385535 ListVie ...

  8. Android中ListView下拉刷新的实现

    ListView中的下拉刷新是非常常见的,也是经常使用的,看到有很多同学想要,那我就整理一下,供大家参考.那我就不解释,直接上代码了. 这里需要自己重写一下ListView,重写代码如下: packa ...

  9. Android 自定义ListView实现底部分页刷新与顶部下拉刷新,androidlistview

    在项目开发中,由于数据过大时,需要进行分页加载或下拉刷新,来缓解一次性加载的过长等待.本篇博文实例讲解通过自定义的ListView实现底部分页加载和顶部下拉刷新的效果. 其效果图: 一.ListVie ...

随机推荐

  1. Win7 64下Visual C++ 6.0不兼容

    Win7 64下Visual C++ 6.0不兼容 安装VSE6.0: 1.运行setup.exe安装程序,会弹出如下的的 程序兼容性助手 提示框,这个是Win7在警告用户vc6存在兼容性问题:此程序 ...

  2. HashMap 读后感

    HashMap是一个哈希表,内部通过链地址法解决哈希冲突.内部用Entry数组保存数据,每个Entry是一个单向链表. HashMap不保证插入的顺序,线程不同步,允许null 下面是几个重要点: 保 ...

  3. BW知识点总结及面试要点

    1.       如何理解数据仓库? 数据仓库 是 一个面向主题的,集成的,相对稳定的,反应历史变化的数据集合,用于支持管理决策. 2.       OLAP 和 OLTP的基本概念 和 区别? Ol ...

  4. Frame 处理

    # -*- coding:utf-8 -*- """ 通过 id 或 name 识别处理 fram 框架 """ from selenium ...

  5. web.xml配置DispatcherServlet

    1. org.springframework.web.servlet.DispatcherServlet 所在jar包: <dependency> <groupId>org.s ...

  6. 【Nginx笔记】nginx配置文件具体解释

    本文主要对nginx的配置做重点说明,关于nginx的其他基本概念.建议參考官网描写叙述.这里推荐Nginx Beginner's Guide这篇文档.对刚開始学习的人高速认识nginx非常有帮助. ...

  7. Oracle 游标及存储过程实例

    /*********实例一*********/ create or replace procedure users_procedure is cursor users_cursor is select ...

  8. mysql 列转行,合并字段

    数据表: 列转行:利用max(case when then) max---聚合函数 取最大值 (case course when '语文' then score else 0 end) ---判断   ...

  9. javascript Date对象扩展相关function

    本篇均以es5为主: 1,月份加减来推日期 // 根据所给月份往后推出日期 function getMonth(count) { var date = new Date(); var year = d ...

  10. Netty 4&period;1 Getting Start (翻译) &plus; Demo

    一.先来官方入门页面的翻译(翻译不好请多包涵) 入门 本章以简单的例子来介绍Netty的核心概念,以便让您快速入门.当您阅读完本章之后,您就能立即在Netty的基础上写一个客户端和一个服务器. 如果您 ...