Google 下拉刷新控件SwipeRefreshLayout

2023-10-12 18:40

本文主要是介绍Google 下拉刷新控件SwipeRefreshLayout,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SwipeRefreshLayout(官方文档点击打开链接)
SwipeRefreshLayout字面意思就是下拉刷新的布局,继承自ViewGroup,在support v4兼容包下,但必须把你的support library的版本升级到19.1。 提到下拉刷新大家一定对ActionBarPullToRefresh比较熟悉,而如今google推出了更官方的下拉刷新组件,这无疑是对开发者来说比较好的消息。利用这个组件可以很方便的实现Google Now的刷新效果,见下图:




主要方法
  • setOnRefreshListener(OnRefreshListener): 为布局添加一个Listener
  • setRefreshing(boolean): 显示或隐藏刷新进度条
  • isRefreshing(): 检查是否处于刷新状态
  • setColorScheme(): 设置进度条的颜色主题,最多能设置四种

其中核心代码如下:可下载Demo点击打开链接(http://download.csdn.net/detail/fang_guiliang/7129613)

SwipeRefreshLayoutTestActivity.java
public class SwipeRefreshLayoutTestActivity extends Activity implementsOnRefreshListener {private SwipeRefreshLayout swipeRefreshLayout;private List<Map<String, String>> list;private Activity activity;private MyListAdapter mAdapter;private ListView mListView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_swipe_refresh_layout_test);swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);mListView = (ListView) findViewById(R.id.listview);activity = this;mAdapter = new MyListAdapter();list = new ArrayList<Map<String, String>>();mListView.setAdapter(mAdapter);swipeRefreshLayout.setColorScheme(android.R.color.holo_blue_bright,android.R.color.holo_green_light,android.R.color.holo_orange_light,android.R.color.holo_red_light);swipeRefreshLayout.setOnRefreshListener(this);}@Overridepublic void onRefresh() {new Handler().postDelayed(new Runnable() {@Overridepublic void run() {if (list.isEmpty()) {addData();} else {initData();}swipeRefreshLayout.setRefreshing(false);mAdapter.notifyDataSetChanged();}}, 1000);}/*** 清除数据*/private void initData() {list.clear();}/*** 模拟数据*/private List<Map<String, String>> addData() {Map<String, String> map;for (int i = 0; i < 30; i++) {map = new HashMap<String, String>();map.put("name", "Google.No." + i);map.put("age", "age" + i);list.add(map);}return list;}/*** 自定义适配器*/class MyListAdapter extends BaseAdapter {@Overridepublic int getCount() {return list.size() <= 0 ? 0 : list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}// 重用视图,防止OOM问题@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Map<String, String> map = list.get(position);ViewHolder holder;if (convertView == null) {holder = new ViewHolder();convertView = LayoutInflater.from(activity).inflate(R.layout.item, null);holder.tvName = (TextView) convertView.findViewById(R.id.name);holder.tvAge = (TextView) convertView.findViewById(R.id.age);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.tvName.setText(map.get("name"));holder.tvAge.setText(map.get("age"));return convertView;}}class ViewHolder {TextView tvName;TextView tvAge;}
}
XML布局:
1.activity_swipe_refresh_layout_test.xml
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/swipe_container"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".SwipeRefreshLayoutTestActivity" ><ListViewandroid:id="@+id/listview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /></android.support.v4.widget.SwipeRefreshLayout>




2.item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/name"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/age"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>

Demo: 点击打开链接 http://download.csdn.net/detail/fang_guiliang/7129613)


这篇关于Google 下拉刷新控件SwipeRefreshLayout的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197722

相关文章

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException异常

用Gson解析json数据的时候,遇到一个异常,如下图: 这个异常很简单,就是你的封装json数据的javabean没有写对,你仔细查看一下javabean就可以了 比如:我的解析的代码是             Gson gson = new Gson();             ForgetJson rb = gson.fromJson(agResult.mstrJson, For

Google Earth Engine——高程数据入门和山体阴影和坡度的使用

目录 山体阴影和坡度 对图像应用计算 应用空间减速器 高程数据 通过从“重置”按钮下拉菜单中选择“清除脚本”来清除脚本。搜索“elevation”并单击 SRTM Digital Elevation Data 30m 结果以显示数据集描述。单击导入,将变量移动到脚本顶部的导入部分。将默认变量名称“image”重命名为“srtm”。使用脚本将图像对象添加到地图: Map

The import com.google cannot be resolved

The import com.google cannot be resolved,报错: 第一感觉就是缺少jar包,因为项目用maven管理,所以在pom.xml中添加: <dependency>  <groupId>com.google.code.gson</groupId>  <artifactId>gson</artifactId>  <version>2.3.1</ver

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中,如果我们不需要使用默认边框设计自己个性化的窗体(FromBorderStyle=none时),这时候你会发现拖动窗体的功能就没有了,这里需要自己构建方法让用户可以拖动整个窗体,这里我们使用前辈的

Qt-常用控件(3)-多元素控件、容器类控件和布局管理器

1. 多元素控件 Qt 中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView xxWidget 和 xxView 之间的区别,以 QTableWidget 和 QTableView 为例. QTableView 是基于 MVC 设计的控件.QTableView 自身不持有数据,使用 QTab