ListView属性设置

android:divider="#fffff"  分割线颜色  android:dividerHeight="1px"  分割线高度  android:listSelector="@color/transparency" 设置选中的颜色//去掉选中的颜色listView.setCacheColorHint(0);/取消分割线listView.setDivider(null);//设置分割线的宽度listView.setDividerHeight(12);//设置背景为透明(0-255)listView.getBackground().setAlpha(60);

滚动监听

listView.setOnScrollListener(new AbsListView.OnScrollListener() {int position;@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {switch (scrollState) {case AbsListView.OnScrollListener.SCROLL_STATE_IDLE://滚动停止               ImageLoader.getInstance().resume();                break;            case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL://listView滚动中                ImageLoader.getInstance().pause();                break;            case AbsListView.OnScrollListener.SCROLL_STATE_FLING://手指用力拖拽,并离开屏幕                    ImageLoader.getInstance().pause();                break;}    } /** * 该方法滚动时一直回调,直到停止滚动时才停止回调。单击时回调一次 * * 参数 * firstVisibleItem:当前能看见的第一个列表项ID(从0开始) * visibleItemCount:当前能看见的列表项个数(小半个也算) * totalItemCount:列表项共数 */@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {position = listView.getFirstVisiblePosition(); //监听当前滚动到第一个item的下标}

onScrollStateChanged方法回调是在滚动时回调,滚动状态有如下几种

//滚动的几种状态常量AbsListView.OnScrollListener.SCROLL_STATE_IDLE                                                  //滚动停止的状态AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL                                           //正常滚动的状态AbsListView.OnScrollListener.SCROLL_STATE_FLING                                              //手指用力拖拽,并离开屏幕

监听listView是否滚动到最后一个item

listView.setOnScrollListener(new AbsListView.OnScrollListener() {            private boolean mLastItemVisible;            @Override            public void onScrollStateChanged(AbsListView view, int state) {                if (state == AbsListView.OnScrollListener.SCROLL_STATE_IDLE && mLastItemVisible) {                  //todo                    }                }            }            @Override            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {                mLastItemVisible = (totalItemCount > 0) && (firstVisibleItem + visibleItemCount >= totalItemCount - 1);            }        });

ListView的优化

  • 列表滚动的时不加载图片的数据
 listView.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), false, true));

如想自定义ScrollListener,可以用以下这种方式

 listView.setOnScrollListener(new AbsListView.OnScrollListener() {            int position;            @Override            public void onScrollStateChanged(AbsListView view, int scrollState) {                //快速滚动时不加载图片                switch (scrollState) {                    case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:                       ImageLoader.getInstance().resume();                        break;                    case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:                        ImageLoader.getInstance().pause();                        break;                    case AbsListView.OnScrollListener.SCROLL_STATE_FLING:                            ImageLoader.getInstance().pause();                        break;                }            }
  • ViewHolder重用
  • 分页加载

案例

indexView索引控件

github地址

更多Android关注相关文章汇总
http://waylenw.github.io/android-dev-teacher/

更多相关文章

  1. android 状态栏背景修改为透明
  2. android 展示单选列表对话框 builder.setSingleChoiceItems
  3. Android Settings 设置中 PreferenceActivity中,Header是如何被加
  4. android中activity的四种加载模式
  5. Android有效解决加载大图片时内存溢出的问题
  6. Android实现朋友圈评论回复列表
  7. Android 图片加载图片_OOM异常解决
  8. Android 状态栏全透明策略
  9. Android UI组件Spinner下拉列表详解

随机推荐

  1. Android调用系统Activity选取图像部分区
  2. android 4种存储方式
  3. Android中的四种启动方式
  4. Android studio使用Lottie- 让Android动
  5. android 自定义dialog,窗口动画
  6. Android 线程池相关知识
  7. PHP将数据库查询内容转换为JSON格式且显
  8. Android(安卓)APP与媒体存储服务的交互
  9. android Eclipse开发问题汇总
  10. 【精华】Android应用程序框架分析