ListView(二)——常用

一、设置项目将分割线

<pre name="code" class="html">        android:divider="@android:color/darker_gray"
        android:dividerHeight="10dp"

 divider不仅可以设置一个颜色,同样可以设置为图片资源。 

        android:divider="@null"
分割线设置为透明


二、隐藏ListView的滚动条

        android:scrollbars="none"


三、取消ListView的Item点击效果

        android:listSelector="#00000000"

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

四、设置ListView需要显示在第几项

        listView.setSelection(N);
ListView默认显示第一个Item,当需要指定具体显示的Item时,可通过以上实现


五、动态修改ListView

        mData.add("new data");
        mAdapter.notifyDataSetChanged();
当修改了传递给Adapter的映射List之后,只需要通过调用Adapter的notifyDataSetChanged()方法,完成对ListView的动态修改

六、遍历ListView中的所有Item

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


七、处理空ListView

listView.setEmptyView(findViewById(R.id.empty_view));
通过以上代码,就给ListView在空数据时显示一张默认图片,用来提示用户;而在有数据时,则不会显示


八、ListView滑动监听

介绍两种监听ListView滑动事件的方法,一个是通过OnTouchListener,另一种是OnScrollListener

(1)、OnTouchListener是View总的监听事件

根据坐标判断用户滑动的方向,并在不同的事件中进行不同的处理

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

                return false;
            }
        });
(2)、OnScrollListener是ABSListView中的监听事件

        listView.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                switch (scrollState){
                    case SCROLL_STATE_IDLE:
                        //滑动停止时
                        break;
                    case SCROLL_STATE_TOUCH_SCROLL:
                        //正在滚动
                        break;
                    case SCROLL_STATE_FLING:
                        //手指抛动时 即手指用力滑动
                        //在离开后 ListView由于惯性继续滑动
                        break;
                }
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                //滚动时一直调用
            }
        });
1)、先看一个方法 onScrollStateChanged当用户没有用手指抛动的状态时,这个方法只会调2次,否则会回调3次,差别就是手指抛动这个状态。
2)、OnScroll()这个方法,ListView滚动时会一直回调,三个int参数非常精确地显示了当前ListView滚动的状态

firstVisibleItem:当前能看到的第一个Item的ID(从0开始);
visibleItemCount:当前能看到的Item总数(包括显示一小半的Item);
totalItemCount:整个ListView的Item总数。


判断是否滚到最后一行

                if(firstVisibleItem + visibleItemCount == totalItemCount && totalItemCount >0){
                    //滚动到最后一行
                }

判断滚动的方向

                if(firstVisibleItem > lastVisibleItemPosition){
                    //上滑
                }else if(firstVisibleItem < lastVisibleItemPosition){
                    //下滑
                }
                lastVisibleItemPosition = firstVisibleItem;//通过成员变量记录上次第一个可视的Item的ID

自己在相应的方法中添加Log,对照Log进行分析会很快掌握方法









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值