ListView
不常注意细节
- listview的分割线。并不是两个item中间有。而是一个item下面就有一个。最后一个item时,其下面也有分割线。
方法
void setSelection (int position) 设置当前选中项,即将第position项显示出来。
Sets the currently selected item. If in touch mode, the item will not be selected but it will still be positioned appropriately. If the specified selection position is less than 0, then the item at position 0 will be selected.
标题
- 捕获ListView中每个item点击事件
- ListView的OnItemClickListener详解
- listview
- listview addHeaderView和addFooterView的注意事项
- ftp多线程多任务下载时的listview滑动列表错乱解决方法
- ListView嵌套ListView问题
- 给Listview里面Item里的每一个控件怎么设定点击事件
- 动态刷新问题——用notifyDataSetChanged没作用
- 自定义ListView中的分割线
- android ListView详解
- ListView中嵌套ListView【原创
- android ListView 嵌套listview
- 解决listview 嵌套listview
- Android Listview嵌套Listview实现评论
- android ListView几个比较特别的属性
- ListView 动态设置高度问题
- 动态改变Listview item高度
- ym——Android之Adapter优化
- Android中ListView下拉刷新的实现
- Android使用ListView实现滚轮的动画效果
- 【Android界面实现】对Listview控件的效率优化
- ZListView,一个最强大的刷新、加载、滑动删除的ListView控件(一)
- Android异步加载访问网络图片-解析json
标题
去除分割线
- 将分割线高度设置为0(部分系统上还会有分割线);
android:dividerHeight=”0dip”
android:listSelector=”@android:color/transparent” - 将分割线设置为全透明;
android:divider=”#00000000” - 在Java中设置
.setDividerHeight(0);
lvMain.setDivider(null);
滑动时背景色
listView.setCacheColorHint(Color.TRANSPARENT);//让ListView滑动的时候条目背景色不会变成黑色
listView.setSelector(new ColorDrawable());//设置默认状态选择器为全透明,不传颜色就是没颜色(也就是条目被点击时,背景没颜色)
右侧滑动块
android:fastScrollEnabled=”true” 设置显示滑动块。默认,当页数小于4时是不显示的。
1,通过反射,更改滑动块样式。效率低
ListView超类AbsListView的一个成员mFastScroller对象的成员mThumbDrawable。这里mThumbDrawable是Drawable类型的。反射更改mThumbDrawable。
2,自定义android.R.attr.fastScrollThumbDrawable属性更改滑动块
mThumbDrawable是通过获取当前Activity主题的android.R.attr.fastScrollThumbDrawable属性赋值,的,自定义此属性值即可。
ExpandableListView
listview多级嵌套
性能优化
- ListView中item的布局至关重要,必须尽可能的减少使用的控件,布局嵌套;
- RelativeLayout是绝对的利器,通过它可以减少布局的层次;
- 巧用ViewHolder机制;
- 同时要尽可能的复用控件,这样可以减少ListView的内存使用,减少滑动时GC次数;
- ListView的背景色与cacheColorHint设置相同颜色,可以提高滑动时的渲染性能;
- getView方法中不能做复杂的逻辑计算,特别是数据库操作,否则会严重影响滑动时的性能。
滑动处理
在onScrollStateChanged()方法中,针对不同的状太做处理。
开发经验
当老项目,一item里有一个布局。后期把一个变为两个item时,使用(2n - 1)求得第一个的数据,第二个用+ 1即可,在一个item里获取两个数据。