博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
listView使用小技巧P66--P76
阅读量:5079 次
发布时间:2019-06-12

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

1.设置分割线高度和颜色

android:divider="@android:color/darker_gray" android:dividerHeight="10dp"

2.隐藏滚动条

android:scrollbars="none"

3.取消点击效果(5.x以上是波纹)

android:listSelector="@android:color/transparent"

4.设置listView需要显示在第几页

//N代表第N个item        mListView.setSelection(N);        //平滑效果        mListView.smoothScrollToPosition(index);        mListView.smoothScrollBy(distance,duration);        mListView.smoothScrollByOffset(offset);

5.遍历所有item

for(int i=0;i

6.设置空空数据显示提示

mListView.setEmptyView(view);

7.listView滑动监听

  ①、onTonchListener

mListView.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View view, MotionEvent motionEvent) {                switch (motionEvent.getAction()) {                    case MotionEvent.ACTION_DOWN:                        //触摸时操作                        break;                    case MotionEvent.ACTION_MOVE:                        //移动时操作                        break;                    case MotionEvent.ACTION_UP:                        //离开时操作                        break;                }                return false;            }        });

 

 

  ②、onScrollListener

mListView.setOnScrollListener(new AbsListView.OnScrollListener() {            @Override            public void onScrollStateChanged(AbsListView absListView, int state) {                switch (state) {                    case SCROLL_STATE_IDLE:                        //滑动停止时                        break;                    case SCROLL_STATE_TOUCH_SCROLL:                        //正在滚动                        break;                    case SCROLL_STATE_FLING:                        //手指抛动时 即手指用力滑动                        //在离开后ListView由于惯性继续滑动                        break;                }            }            @Override            public void onScroll(AbsListView absListView, int firstVisibleItem,                                 int visibleItemCount, int totalItemCount) {                //滑动时一直调用                //firstVisibleItem:当前能看到的第一个item的id,从0开始                //visibleItemCount:当前能看到的Item的总数,显示了一小半的item也包括在内了                //整个listView的item总数                                if(firstVisibleItem+visibleItemCount==totalItemCount && totalItem-count>0){                    //滑动到最后一行                }                                                if(firstVisibleItem>lastVisibleItemPosition){                    //上滑                }else if(firstVisibleItem

 

8.listView获取最后一个item的id和第一个的id

mListView.getLastVisiblePosition(); mListView.getFirstVisiblePosition();

 

9.具有弹性的listView

  只需重写overScrollBy方法即可

  

@Override    protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {        return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);    }

  重写之后:

 

@Override    protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {        return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX+slideDistanceX, maxOverScrollY+slideDistanceY, isTouchEvent);    }

 

当然计算的时候为了适应多分辨率:

DisplayMetrics metrics = context.getResources().getDisplayMetrics();  float density = metrics.density;  slideDistanceX =(int)(density * slideDistanceX);  slideDistanceY =(int)(density * slideDistanceY);

 

转载于:https://www.cnblogs.com/zzw1994/p/5660378.html

你可能感兴趣的文章
对于负载均衡的理解
查看>>
django简介
查看>>
window.event在IE和Firefox的异同
查看>>
常见的js算法面试题收集,es6实现
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Windows10 下Apache服务器搭建
查看>>
HDU 5458 Stability
查看>>
左手坐标系和右手坐标系
查看>>
solr后台操作Documents之增删改查
查看>>
http://yusi123.com/
查看>>
文件文本的操作
查看>>
Ubuntu linux下gcc版本切换
查看>>
记一次Web服务的性能调优
查看>>
jQuery.form.js使用
查看>>
(转)linux sort,uniq,cut,wc命令详解
查看>>
关于ExecuteNonQuery执行的返回值(SQL语句、存储过程)
查看>>
UVa540 Team Queue(队列queue)
查看>>
mysql数据增删改查
查看>>
shell中下载最新版本或指定版本的办法(Dockerfile 中通用)
查看>>
极客时间-左耳听风-程序员攻略-分布式架构工程设计
查看>>