ListView使用完全讲解
16lz
2021-01-23
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/
更多相关文章
- android 状态栏背景修改为透明
- android 展示单选列表对话框 builder.setSingleChoiceItems
- Android Settings 设置中 PreferenceActivity中,Header是如何被加
- android中activity的四种加载模式
- Android有效解决加载大图片时内存溢出的问题
- Android实现朋友圈评论回复列表
- Android 图片加载图片_OOM异常解决
- Android 状态栏全透明策略
- Android UI组件Spinner下拉列表详解