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)的更多相关文章

  1. android 之下拉刷新

    一.概述 Android 下拉刷新几乎是每个应用都必带的功能, 并且现在下拉刷新第三方库也越来越多了,很方便就能实现该功能, 下面我介绍一下 自己常用的几个方法. 二.例子 第一种方式:就是集成Lis ...

  2. Android之下拉刷新的ListView

    不废话,代码里面注释很详细,直接上代码: 自定义的RefreshableListView代码: public class RefreshableListView extends ListView im ...

  3. Android之下拉刷新,上啦加载的实现(一)

    转载地址http://blog.csdn.net/leehong2005/article/details/12567757#t5 前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但 ...

  4. Xamarin.Android之下拉刷新

    一.前言 当今任何一个App中只要存在列表,基本上都会使用下拉刷新,而身为Xamarin一族的我们自然也不会落后,下面笔者将带领大家在Xamarin下实现Android中的下拉刷新的效果. 二.准备工 ...

  5. 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)

    转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...

  6. 【原创】窥视懒人的秘密---android下拉刷新开启手势的新纪元

    小飒的成长史原创作品:窥视懒人的秘密---android下拉刷新开启手势的新纪元转载请注明出处 **************************************************** ...

  7. 微信小程序之下拉刷新,上拉更多列表实现

    代码地址如下:http://www.demodashi.com/demo/11110.html 一.准备工作 首先需要下载小程序开发工具 官方下载地址: https://mp.weixin.qq.co ...

  8. Android 下拉刷新上拉载入 多种应用场景 超级大放送(上)

    转载请标明原文地址:http://blog.csdn.net/yalinfendou/article/details/47707017 关于Android下拉刷新上拉载入,网上的Demo太多太多了,这 ...

  9. Android UI之下拉刷新上拉刷新实现

    在实际开发中我们经常要用到上拉刷新和下拉刷新,因此今天我写了一个上拉和下拉刷新的demo,有一个自定义的下拉刷新控件 只需要在布局文件中直接引用就可以使用,非常方便,非常使用,以下是源代码: 自定义的 ...

随机推荐

  1. mac 安装redis

    一.下载 官网http://redis.io/ (搞不懂为啥被墙) 二.安装 将下载的tar.gz文件复制到 /usr/local 文件夹下 解压 sudo tar -zxvf redis3.1.6. ...

  2. jQuery Easing 使用方法及其图解

    jQuery Easing 使用方法及其图解,非常详尽:http://blog.sina.com.cn/s/blog_70a3539f0102v8az.html

  3. JAVA 使用POI导出数据格式为Execl

    需要下载一个poi的jar包. 控制器 @Override public void getContractListExecl(Contract contract, BindingResult resu ...

  4. easyui tree 折叠节点

    <ul id="jihuidian" class="easyui-tree" data-options="onBeforeLoad:functi ...

  5. 与SQL注入第一次相遇

    sql注入的含义sql注入是将代码插入(拼接)到应用(用户)的输入参数中, 之后再将这些参数传递给后台的SQL服务器加以解析并执行的攻击, 总结起来就是攻击者将恶意代码拼接到sql语句并加以执行从而得 ...

  6. freemarker if elseif

    FreeMarker模板 if, else, elseif 指令 : if, else, elseif 语法 <#if condition> ... <#elseif conditi ...

  7. 0517Scrum项目4.0

    一.任务看板: 二.任务认领情况: 冯铭杰:界面的设置和部分功能的实现: 梁毅乾:四则运算的功能实现以及代码的维护: 陈施恩:监督小组成员的工作进度,以及代码的编写: 张俊毅:四则运算的算术随机产生: ...

  8. ios 打包

    /usr/bin/xcodebuild -scheme Moon -sdk iphoneos -workspace Moon.xcworkspace -configuration Release cl ...

  9. 不用static,巧用对象.方法调用java中的函数

    先生成一个对象,用"对象.方法()"的方式调用. java中的main方法是静态的,用于程序的入口,在静态方法中无法调用非静态方法,只能调用静态方法.想调用静态方法的话就要先生成该 ...

  10. vertical-align及IE7下的inline-block

    在IE7下,是不支持inline-block元素的,当对块级元素如dl进行inline-block样式设置时,在IE7浏览器是下样式是不会生效的. 若要在IE7下实现将块级元素设置为内联元素,可以这样 ...