android之下拉刷新(reflush)
package com.example.reflush; import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AbsListView.OnScrollListener;
import android.widget.LinearLayout.LayoutParams; public class MainActivity extends ListActivity implements OnScrollListener{
private static final String TAG = "MainActivity";
private listViewAdapter adapter = new listViewAdapter();
ListView listView ;
private int lastItem = ;
LinearLayout loadingLayout;
/**
* 设置布局显示属性
*/
private LayoutParams mLayoutParams =new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
/**
* 设置布局显示目标最大化属性
*/
private LayoutParams FFlayoutParams =new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT); private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate(Bundle savedInstanceState)>>>>>>>>>>>>>>>" );
//线性布局
LinearLayout layout = new LinearLayout(this);
//设置布局 水平方向
layout.setOrientation(LinearLayout.HORIZONTAL);
//进度条
progressBar = new ProgressBar(this);
//进度条显示位置
progressBar.setPadding(, , , );
//把进度条加入到layout中
layout.addView(progressBar, mLayoutParams);
//文本内容
TextView textView = new TextView(this);
textView.setText("加载中...");
textView.setGravity(Gravity.CENTER_VERTICAL);
//把文本加入到layout中
layout.addView(textView, FFlayoutParams);
//设置layout的重力方向,即对齐方式是
layout.setGravity(Gravity.CENTER); //设置ListView的页脚layout
loadingLayout = new LinearLayout(this);
loadingLayout.addView(layout, mLayoutParams);
loadingLayout.setGravity(Gravity.CENTER); //得到一个ListView用来显示条目
listView = getListView();
//添加到页脚显示
listView.addFooterView(loadingLayout);
//给ListView添加适配器
setListAdapter(adapter);
//给ListView注册滚动监听
listView.setOnScrollListener(this);
}
@Override
public void onScroll(AbsListView v, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
Log.i(TAG , "Scroll>>>first: " + firstVisibleItem + ", visible: " + visibleItemCount + ", total: " + totalItemCount);
lastItem = firstVisibleItem + visibleItemCount - ;
Log.i(TAG , "Scroll>>>lastItem:" + lastItem);
//显示50条ListItem,即0-49,因为onScroll是在“滑动”执行过之后才触发,所以用adapter.count<=41作条件
if (adapter.count<=) {
if (firstVisibleItem+visibleItemCount==totalItemCount) {
adapter.count += ;
adapter.notifyDataSetChanged();
listView.setSelection(lastItem);
int currentPage=adapter.count/;
Toast.makeText(getApplicationContext(), "第"+currentPage+"页", Toast.LENGTH_LONG).show();
}
}
else {
listView.removeFooterView(loadingLayout);
} }
@Override
public void onScrollStateChanged(AbsListView v, int state) {
if (lastItem == adapter.count && state == OnScrollListener.SCROLL_STATE_IDLE) {
Log.i(TAG,"ScrollStateChanged>>>state:"+state+"lastItem:" + lastItem);
//显示50条ListItem,即0-49,因为onScrollStateChanged是在“拖动滑动”执行过之后才触发,所以用adapter.count<=41作条件
if (adapter.count<=) {
adapter.count += ;
adapter.notifyDataSetChanged();
} }
}
/**
* 要用用于生成显示数据
* @author tomatos.to
*
*/
class listViewAdapter extends BaseAdapter {
int count = ;
public int getCount() {
Log.i(TAG, "getCount>>>count:" + count);
return count;
}
public Object getItem(int pos) {
Log.i(TAG, "getItem>>>pos:" + pos);
return pos;
}
public long getItemId(int pos) {
Log.i(TAG, "getItemId>>>ItemId:" + pos);
return pos;
}
public View getView(int pos, View v, ViewGroup p) {
Log.i(TAG, "getView>>>pos:" + pos);
TextView view;
if (v==null) {
view = new TextView(MainActivity.this);
}
else {
view=(TextView)v;
}
view.setText("ListItem " + pos);
view.setTextSize(20f);
view.setGravity(Gravity.CENTER);
view.setHeight();
return view;
}
} }
android之下拉刷新(reflush)的更多相关文章
- android 之下拉刷新
一.概述 Android 下拉刷新几乎是每个应用都必带的功能, 并且现在下拉刷新第三方库也越来越多了,很方便就能实现该功能, 下面我介绍一下 自己常用的几个方法. 二.例子 第一种方式:就是集成Lis ...
- Android之下拉刷新的ListView
不废话,代码里面注释很详细,直接上代码: 自定义的RefreshableListView代码: public class RefreshableListView extends ListView im ...
- Android之下拉刷新,上啦加载的实现(一)
转载地址http://blog.csdn.net/leehong2005/article/details/12567757#t5 前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但 ...
- Xamarin.Android之下拉刷新
一.前言 当今任何一个App中只要存在列表,基本上都会使用下拉刷新,而身为Xamarin一族的我们自然也不会落后,下面笔者将带领大家在Xamarin下实现Android中的下拉刷新的效果. 二.准备工 ...
- 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)
转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...
- 【原创】窥视懒人的秘密---android下拉刷新开启手势的新纪元
小飒的成长史原创作品:窥视懒人的秘密---android下拉刷新开启手势的新纪元转载请注明出处 **************************************************** ...
- 微信小程序之下拉刷新,上拉更多列表实现
代码地址如下:http://www.demodashi.com/demo/11110.html 一.准备工作 首先需要下载小程序开发工具 官方下载地址: https://mp.weixin.qq.co ...
- Android 下拉刷新上拉载入 多种应用场景 超级大放送(上)
转载请标明原文地址:http://blog.csdn.net/yalinfendou/article/details/47707017 关于Android下拉刷新上拉载入,网上的Demo太多太多了,这 ...
- Android UI之下拉刷新上拉刷新实现
在实际开发中我们经常要用到上拉刷新和下拉刷新,因此今天我写了一个上拉和下拉刷新的demo,有一个自定义的下拉刷新控件 只需要在布局文件中直接引用就可以使用,非常方便,非常使用,以下是源代码: 自定义的 ...
随机推荐
- python走起之第四话
本节大纲: 一:双层装饰器:一个函数可以被多层装饰器进行装饰,函数渲染(编译)从下到上,函数执行从上到下.如下程序: 1 #!/usr/bin/env python 2 #-*-coding:utf- ...
- jQuery核心之 $
参考jQuery官网API文档 $ 和 $() 的区别很重要: 1.$(document).ready() 和 $(document).load() 的 区别: 前者等到DOM准备好了之后就会 ...
- hdu4987A simple probability problem.(凸包)
链接 多校的最后一场,当时没看懂题意,看题目还以为是概率问题就没深看. 官方题解 对于他说的第一种,考虑长为L的线段 概率为2L/(pi*d), 可以理解,下面的就不知道在说啥了.. 按我初始的想法想 ...
- 转!!mybatis在xml文件中处理大于号小于号的方法
第一种方法: 用了转义字符把>和<替换掉,然后就没有问题了. SELECT * FROM test WHERE 1 = 1 AND start_date <= CURRENT_DA ...
- Java 实现word 中写入文字图片的解决方案
JAVA生成WORD文件的方法目前有以下两种方式: 一种是jacob 但是局限于windows平台 往往许多JAVA程序运行于其他操作系统 在此不讨论该方案; 一种是poi但是他的excel处理很程序 ...
- linux -- 基于mysql tomcat 部署web项目
一.导入数据库 二.配置web项目访问端口 vim /var/lib/tomcat8/conf/server.xml <Connector port=" protocol=" ...
- Xcode集成开发环境的安装
Xcode是苹果官方提供的iOS开发环境,安装方式如下: 安装过程需要登录AppleID账号,如果你没有苹果账号,可以免费注册一个.根据提示就能完成Xcode安装.
- 樱花漫地集于我心,蝶舞纷飞祈愿相随 発生:genesis 发生:genesis
朱念齐,学号160809404(这些其实并没有什么乱用)唉( ̄y▽ ̄)~* 正文 鬼族后裔,原是露格尼卡王国的子民,在王立比布利亚学园任职魔法使拥有分别为: 拥有书库: 书库:傲慢(Superbia) ...
- session没有过期,其保存的数据无故丢失的原因
问题: 我们经常会做到的一个功能,将登录用户信息保存到session中,在页面上显示登录用户名.但是,如果很短时间内甚至几秒没有刷新这个页面的话,这个用户名就消失了,其实就是session中保存的用户 ...
- WCF事务应用[转]
在B2B的项目中,一般用户注册后,就有一个属于自己的店铺,此时,我们就要插入两张表, User和Shop表. 当然,要么插入成功,要么全失败. 第一步: 首先看一下项目的结构图: 第二步: 准备工作, ...