读Android群英传第四章

以下是读Android群英传的第四章自我小结
4.1.2listview分割线

divider设置listview中的分割线
dividerHeight设置分割线的高度

4.1.3隐藏Listview的滚动条

android:scrollbars=”none”

4.1.4取消Listview的item点击效果

android:listSelector=”#00000000”
或android:listSelector=”@android:color/transparent”

4.1.5设置ListView需要显示在第几项

listview.setSelection(N); // 这个操作是瞬间完成的(其中N是从0开始的)
或者 listview.smoothScrollBy(distance,duration); distance 代表移动的距离
duration 代表移动这段距离的时间 listview.smoothScrollByOffset(offset); //
会使你指定的位置显示在最上面 listview.smoothScrollToPosition(index) //
会使你指定的位置显示在最下面

俩者的区别: 第一种没有平滑移动的效果。

4.1.6 如何动态修改ListView中的数据

先修改传递给Adapter的映射List,然后通过Adapter.notifyDataSetChange();

4.1.7如何遍历Listview中的所有item

通过Listview的getchildAt(position)方法

4.1.8处理ListView为空

我们可以通过ListView的setEmptyView(View view)方法设置一个view。
这样当Listview为空时就会显示这个View

4.1.9ListView滑动监听

主要有俩种方式:
1.通过OnTouchListener监听

mListView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                return false;
            }
        });

2.通过OnScrollListener监听

OnScrollListener中有俩个回调方法onScrollStateChaged()和onScroll

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

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                System.out.println(firstVisibleItem);
                System.out.println(visibleItemCount);
                System.out.println(totalItemCount);
                if ((firstVisibleItem + visibleItemCount) == totalItemCount) {
                    if(mToast == null)
                        mToast =  Toast.makeText(MainActivity.this, "到最后了!!!", Toast.LENGTH_SHORT);

                   //mToast.cancel();
                   mToast.show();
                }
            }
        });

ListView还给我们提供了getLastVisiblePositon和getFirstVisiblePosition来获取第一个可见位置和最后一个可见的位置

4.2.1创造有弹性的ListView

方法:通过覆写ListView中的overScrollBy方法,在调用父类方法中设置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, 50, isTouchEvent);
}

4.2.2 自动显示、隐藏布局的ListView

主要是通过OnTouchListener来实现对手势的判断,然后进行你想要隐藏和显示的属性动画操作

4.2.3 实现聊天的ListView

主要是通过重写Adapter的getItemViewType和getViewTypeCount来实现逻辑

4.2.4 动态改变ListView布局

需要记住Adapter中getView只是在初始化的时候会调用,但是我们可以通过Adapter的notifyDataSetChanged()方法重新调用getView

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值