Android中ListView学习---你可能不知道的细节

这里写图片描述

1.将分割线设置为透明

 android:divider="@null"

2.取消ListView的item的点击效果。

android:listSelector="#00000000"

3.listView滚动和选择item
设置listView需要显示在第几行

 listView.setSelection(N);

还可以实现平滑的过度

listView.smoothScrollBy(distance,duration)

//通过这俩个方法就能实现listView的类似翻页的效果

listView.smoothScrollByOffset(offset)
listView.smoothScrollToPosition(index);

4.可以遍历listView的每个view,//这个仅仅是获取的当前屏幕上显示的item的数量

for(int i =0;i < listView.getChildCount();i++){
  View view=listView.getChildAt(i);
}

5.处理空的listview

listView.setEmptyView(R.id.xxxx),//如果是单独使用一个layout进行显示,必须使用getParent().addView()将其添加进去才可以进行显示

View emptyView = LayoutInflater.from(this).inflate(R.layout.no_data, null);
emptyView.setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT));//设置LayoutParams
((ViewGroup) listview.getParent()).addView(emptyView);//添加到当前的View hierarchy
listview.setEmptyView(emptyView); 

6.设置listVIew的滑动的监听,有两种方法

listView.setOnTouchListener(....)

listview.setOnScrollListener(new AbsListView.OnScrollListener() {
        private boolean showBottomToa = false;
        private boolean showTopToa = false;

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            Log.e("TAG", "onScrollStateChanged===view===" + view.getClass() +
                    "    scrollState===" + scrollState);
 //                public static int SCROLL_STATE_IDLE = 0;
//                public static int SCROLL_STATE_TOUCH_SCROLL = 1;
//                public static int SCROLL_STATE_FLING = 2;
        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            Log.e("TAG", "onScroll===view===" + view.getClass() +
                    "    firstVisibleItem===" + firstVisibleItem + "    visibleItemCount===" + visibleItemCount + "    totalItemCount==" + totalItemCount);

//                判断滑动到最后一行
            if (firstVisibleItem + visibleItemCount == totalItemCount && !showBottomToa) {
                showBottomToa = true;
                Toast.makeText(MainActivity.this, "滑动到底部了", Toast.LENGTH_SHORT).show();
            }
            if (firstVisibleItem + visibleItemCount != totalItemCount) {
                showBottomToa = false;
            }
            if (firstVisibleItem == 0 && showTopToa) {
                showTopToa = false;
                Toast.makeText(MainActivity.this, "滑动到顶部", Toast.LENGTH_SHORT).show();
            }
            if (firstVisibleItem != 0) {
                showTopToa = true;
            }
        }
    });

7.获取可视区域最后一个item的id

listView.geteLastVisiblePosition()

//获取可视区域第一个item的id

listView.getFirstVisiblePosition();

8.设置具有弹性的ListView 重写overScrollBy(。。。)方法。修改其中的第8个属性值maxOverScrollY,达到目的

@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, 300, isTouchEvent);
}

9.自动显示和隐藏头部的listView

注意使用getTranslationX() 和getTanslationY(),他表示的是view在X轴和Y轴的偏移量。往左为负值,往右为正值。初始值为0.
这里写图片描述
使用下面的方法,实现随着listView的滚动,toolbar显示和消失.
这里写图片描述
这里写图片描述

demo地址:
https://github.com/yunzheyue/listViewTest

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值