ListView概述
来源:互联网 发布:大学生简历 知乎 编辑:程序博客网 时间:2024/04/28 12:18
记录自己成长的点滴
我在接触Android开发的时候,项目就在这样写了。如今随着年龄的老去,积淀了一些见解
基础不多讲了,直接讲讲自己开发中遇到的一些心得
ListView之--------ViewHolder
ViewHolder模式是ListView的一个提高效率的重要方法。它利用了视图缓存机制,避免了每次在调用getView()的时候都findViewById实例化,减少了一些不必要的实例化。这种模式已经没什么好说的了,它只需要在Adapter里定义一个内部类ViewHolder,并将布局中控件作为成员变量,在getView()的时候使用控件们。如下:
<pre name="code" class="java">public class MyAdapter extends BaseAdapter{ public List<String> mData; public LayoutInflater mInflater; 此处省略一百个字... @Override public View getView(int position,View view, ViewGroup parent) { ViewHolder holder == null; //此处应该判断是否已经被创建 if(view == null ) { holder = new ViewHolder(); //如果没有视图缓存,那么实例化一个出来,下面应该加在一个布局 view = mInflater.inflate(R.layout.xxx); //接下来就是findVIewById没啥好说的 view.setTag(holder); } else { //通过tag找到缓存的布局 holder = (ViewHolder)view.getTag(); } //下面设置布局中控件要显示的视图,省略} //此处是内部类ViewHolder,}
据说这种模式会提高50%多的效率,尤其在低端机上明显。
下面,是一些ListView的方法
视图间的分割divider="@null"(不设置分割线),可使用color填充分割线
dividerHeight分割线高度(有时间我会加入RecyclerView里,添加分割线的方法)
滚动条scrollbars=“null”隐藏滚动时的滚动条
item点击变色:默认的点击颜色太难看
listSelector=“#00000000”或者listSelector=“@color...”
设置显示的item项
mListView.setSelection(position);
在类中使用
mListView.smoothScrollBy(distance,duration);
mListView.smoothScrollBy(offset);
mListView.smoothScrollToPosition(position);
动态改变ListView
mData.add(“xxx”);
mAdapter.notifyDataSetChanged();
空布局
mListView.setEmptyView(findViewByID(R.id.empty));
遍历所有item
for(int i = 0; i < mListView.getChildCount(); i ++)
{
View view = mListView.getChildAt(i);
}
{
View view = mListView.getChildAt(i);
}
滑动监听
OnTouchListener
监听ACTGION_DOWN,ACTION_MOVE,ACTION_UP这三个事件发生时的坐标,就可以根据坐标判断滑动方向。
OnScrollListener
OnScrollListener是AbsListView中的监听事件,它封装了很多与ListView相关的信息,使用起来更加灵活。其中有两个回调方法:onScrollStateChanged()和onScroll()。
onScrollStateChanged这个方法根据它的参数scrollState来决定其回调的次数,它有以下三种模式:
onScrollListener.SCROLL_STATE_IDLE:滚动停止的时候
onScrollListener.SCROLL_STATE_TOUCH_SCROLL:正在滚动的时候
onScrollListener.SCROLL_STATE_FLING:手指用力滑动时,由于惯性导致ListView继续滑动的状态
onScroll这个回调方法,会在滚动时一直回调,而方法中的
第二个参数firstVisibleItem:指的是当前能看见的第一个Item的ID(ID也是从0开始)
visibleItemCount指的是当前能看见的Item总数(当前能看见的Item,包括没有显示完整的Item)
totalItemCount指的是整个ListView里包含的Item总数。
原生的谷歌提供的控件真的非常丑陋,像IOS,在列表滑动完会有一个弹性的效果
1 0
- ListView概述
- ListView原理概述
- Android | ListView 、GridView 和 RecyclerView 概述
- 概述
- 概述
- 概述
- 概述
- 概述
- 概述
- 概述
- 概述
- 概述
- 概述
- 概述
- 概述
- 概述
- 概述
- 概述
- English,in August
- 基于Java的打包jar、war、ear包的作用与区别详解
- File Explorer&DDMS&ADB
- CSU - 1753 野心
- 无线通讯网
- ListView概述
- Ecplise无法编译Servlet的问题
- UVA 193 Graph Coloring
- Linux常用命令
- Linux学习第三天-文本管理和bash特性
- Excel插入斜线表头
- Android GridView属性集合
- 假期集训总结
- python核心编程学习笔记-2016-08-27-01-多线程编程