PullToRefreshListView设置标题置顶和下拉跟随

这几天想着界面的优化,关于PullToRefreshListView标题栏置顶和下拉跟随的效果。这里说说我的大体思路(如果你有跟好的方法,不吝赐教。)在listview的头部添加一个虚拟的headerView(跟标题一样)并设置成INVISIBLE。然后在下拉的时候隐藏标题栏,显示headerView。

首先看一下PullToRefreshBase的源码。这里是获得PullToRefreshListView下拉的距离(value)。

protected final void setHeaderScroll(int value) {
    if (null != mOnBack) {
        this.value = value;
        mOnBack.OnBack(value);
    }
    if (DEBUG) {
        Log.d(LOG_TAG, "setHeaderScroll: " + value);
    }

    // Clamp value to with pull scroll range
    final int maximumPullScroll = getMaximumPullScroll();
    value = Math.min(maximumPullScroll, Math.max(-maximumPullScroll, value));

这里的距离可以通过mOnBack.OnBack(value);的回调函数得到。在Activity页面中需要实现PullToRefreshBase.OnBack的回调。

refreshListView.setOnBack(this);
@Override
    public void OnBack(int scrollY) {
        mScrollY = scrollY;
        if (scrollY == 0) {
            count++;
        }
        if (count == 2) {
            ll_head.setVisibility(View.VISIBLE);
            headerView.setVisibility(View.INVISIBLE);
            count = 0;
        } else {
            ll_head.setVisibility(View.GONE);
            headerView.setVisibility(View.VISIBLE);
        }
    }

在这里一次刷新,scroollY会有2次变为0的时候,分别是下拉头部加载布局出现放手时和加载完成时。还一种方法是OnBack和setOnScrollListener结合使用。这种情况就不用判断2次0了。

@Override
public void OnBack(int scrollY) {
    ll_head.setVisibility(View.GONE);
    headerView.setVisibility(View.VISIBLE);
}
 @Override
 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    if (!refreshListView.isHeaderShown()) {
        ll_head.setVisibility(View.VISIBLE);
        headerView.setVisibility(View.INVISIBLE);
    }
}

这里会有一个bug,就是刷新的时候向上滑动时,标题会跟着一块走了,没有置顶的效果。只有刷新完成时才会有我们自己想要的效果。

整体感觉还是第一种方法好点。如果你有更好的方法,不吝赐教。继续努力争取解决这个问题。

时间: 2024-10-12 04:09:49

PullToRefreshListView设置标题置顶和下拉跟随的相关文章

listview下拉直接置顶,上拉正常,请各位大神帮忙看一下

============问题描述============ import java.text.SimpleDateFormat; import java.util.Date; import com.mlocso.qqtterminal.R; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; imp

设置联动的<select></select>下拉选项菜单的默认值

送货地址/收货人: <span id="region"> <select class="w110"> </select> <input type="hidden" value="" name="city_id" id="city_id"> <input type="hidden" name="area_i

用sql语句取设置了置顶的记录

select * from products order by case when isTop=0 then 1 else 0 end,pId desc 这句语句我是这么理解的: isTop=0(设为1) 未置顶 =1置顶(设为0):升序排列. pId是表的主键,自增长:降序排列. 这样就能将主键降序与置顶统一按降序排列出来了.

Android ListView标题置顶效果实现

一. 有图有真相     二.实现: 1. 基于ListView分类效果 2. TitleView即标题的处理(创建) 3. 处理TitleView的三种状态 三.源码: 例子下载 实现可以看代码,具体描述以后再添加. 转载请注明出处:http://blog.csdn.net/love_world_/article/details/8011101

定制QT有标题的扁平化下拉框控件-QComboBox+QLineEdit+QListView

关键字:QT,QComboBox,QLineEdit,QListView OS:Windows 7 问题链接:QComboBox: Can we make the entire combobox clickable, not just the dropdown button (arrow) itself? 为了使整个combobox都是可点击的,所以加个QTComboBoxButton类继承QLineEdit,在mousePressEvent里面showPopup. class QTComboB

&lt;select&gt;设置multiple=&quot;multiple&quot;属性后 下拉框全部展开了 不再是折叠的怎么回事

1 <select multiple="multiple" size="5"> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select>

Hexo 博客文章置顶设置方法

设置文章置顶 1. 修改仓库,使其支持置顶功能 可以直接运行以下命令进行安装: $ npm uninstall hexo-generator-index --save $ npm install hexo-generator-index-pin-top --save 2. 在文章中添加置顶信息 在需要置顶的文章Front-matter中加上top: true或top: 10即可. title: Hello World! date: 2018-06-26 10:37:59 tags: 随笔 top

下拉选项设置数据的三种方式介绍

度量快速开发平台中,在智能窗体上拖入下拉选择,可以实现很多功能.比如制作查询条件,选择数据等. 方法1:直接在下拉选择右边属性中设置数据. 使用效果: 该方法设置简答,对于那种是固定数据的设置,可以采用这样的效果实现.下拉选项1.Value   与 下拉选项1.SelectedText 获取的值都一样. 方法2:用下拉选项的SetItems方法实现 下拉选项1.SetItems("A,B,C,D",false) 效果与方法一一样,这个方法可以动态的来设置数据,比如根据不同的条件设置不同

平台下拉选择设置项

添加下拉选择部件的下拉列表选项,并设置选项内容是否只读.  在窗体的事件管理--加载事件中,为下拉选择部件设置下拉选项: 然后在事件管理--控件--下拉选择的值变化事件中添加如下代码:(获取下拉选项的关键值.显示值) 运行效果: 注:通过该实例应用我们发现,如果用平台中封装好的下拉选择部件方法"设置项",为下拉选择部件设置选项内容:那么下拉选项的关键值为:0...n-1,显示值为:设置的对应值. 说明:如果用平台中封装好的下拉选择部件方法"设置数据源",为下拉选择部