博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android ListView下拉刷新之头布局的完成
阅读量:5732 次
发布时间:2019-06-18

本文共 3235 字,大约阅读时间需要 10 分钟。

首先要在listview添加一个头布局,

然后进行隐藏,

再进行touch监听,显示头布局

package com.example.listviewf5;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.widget.ListView;public class MyListView extends ListView {    private View v;    private int headHeight;// 头部的高度    private int downY;// 按下时候Y坐标    public MyListView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        // TODO Auto-generated constructor stub        initView(context);    }    public MyListView(Context context, AttributeSet attrs) {        super(context, attrs);        // TODO Auto-generated constructor stub        initView(context);    }    public MyListView(Context context) {        super(context);        // TODO Auto-generated constructor stub        initView(context);    }    /**     * 加载顶部布局文件     *      * @param context     */    private void initView(Context context) {        // LayoutInflater in =LayoutInflater.from(context);        // v = in.inflate(R.layout.head,null);        v = View.inflate(context, R.layout.head, null);        this.addHeaderView(v);        v.measure(0, 0);// 通知系统测量宽高        headHeight = v.getMeasuredHeight();// 得到测量后的高度        v.setPadding(0, -headHeight, 0, 0);// 进行隐藏head,就是把paddingtop设置成负高度    }    @Override    public boolean onTouchEvent(MotionEvent ev) {        switch (ev.getAction()) {        case MotionEvent.ACTION_DOWN:            downY = (int) ev.getY();            break;        case MotionEvent.ACTION_MOVE:            int deltaY = (int) (ev.getY() - downY);//得到移动的距离            int currentHeight = -headHeight + deltaY;            //判断当前的距离是不是大于headHeight 并且显示的是第一个位置            if(currentHeight>-headHeight && getFirstVisiblePosition()==0){                v.setPadding(0, currentHeight, 0, 0);//展现头部                return true;//拦截事件不让listview处理            }            break;        case MotionEvent.ACTION_UP:            break;        }        return super.onTouchEvent(ev);    }        }
package com.example.listviewf5;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.ListView;import android.widget.SimpleAdapter;public class MainActivity extends Activity {    private MyListView lv;    private List
> list; private SimpleAdapter sa; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (MyListView) findViewById(R.id.lv); list = new ArrayList
>(); for (int i = 0; i <20; i++) { Map
map = new HashMap
(); map.put("key1","神马都是浮云"); map.put("key2","heheda"); list.add(map); } sa = new SimpleAdapter(this, list,R.layout.item_lv, new String[]{"key1","key2"},new int[]{R.id.tv,R.id.tv2}); lv.setAdapter(sa); }}

 

转载于:https://www.cnblogs.com/84126858jmz/p/5056455.html

你可能感兴趣的文章
爱上阿森纳,爱上一种信仰
查看>>
计算机的容量单位
查看>>
Linux下Tomcat的安装配置
查看>>
remainingCharacters谷歌浏览器报错未定义,这到底是不是个属性呢,还是作者没有写清楚?...
查看>>
无线AP和无线路由器区别wifi热点
查看>>
我的Java学习笔记-Java面向对象
查看>>
RabbitMQ安装
查看>>
json时间格式化问题
查看>>
3、debian8安装和处理
查看>>
公司机器(线上机器)启动ftp任务的命令
查看>>
【转载】网络攻击技术(三)——Denial Of Service & 哈希相关 & PHP语言 & Java语言
查看>>
函数的特性
查看>>
Java 重写(Override)与重载(Overload)
查看>>
Vue+NodeJS+ElementUI 的简单示例
查看>>
php实现构建乘积数组(算法:替换)(语法错误:分号和$符号)
查看>>
php实现求一个数的质数因子
查看>>
laravel中建立公共视图的方法
查看>>
Selenium&PhantomJS 完成爬取网络代理
查看>>
Android测试环境搭建(win7)
查看>>
C#后台调用浏览器打开下载连接地址的三种方法
查看>>