本文参考连接:http://blog.csdn.net/kesenhoo/article/details/7196920
android中listView是非常常用的组建,下边就经常用到的功能做一下简单的介绍
1、adapter对应的getView方法:
此方法的作用:获取list item的每一项view,取到后返回进行显示。
问题: 当有很多数据需要显示时,创建view怎么办?
对此,Android提供了一套重复利用的机制叫做“Recycler”:
原理简单描述下就是这样:
在一个完整的ListView第一次出现时,每个Item都是Null的,getView的时候会执行到需要inflate一个Item的代码段,假设整个view只能最多显示10个item,那么 当滑动到第11个Item的时候,第一个item会放入“recycler“,如果第11个Item和放 入“Recycler”的item的view一致,那么就会使用"Recycler"里面的Item来显示, 从而不用再重复inflate一次,这样大大节省了创建View的工作,在需要显示大量数 据时显得尤为重要。
<pre name="code" class="java"><span style="font-size:24px;">@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(
R.layout.temp_layout, null);
holder.mTextView = (TextView) convertView
.findViewById(R.id.temp_layout_text);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
}</span>
2、listView滑动问题
<span style="font-size:24px;"> @Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount)</span>
参数介绍:
firstVisibleItem :第一个可见item所在的位置,滑动一个,增大一个值。
visibleItemCount:当前屏幕可见个数
totalItemCount:和view.getCount()是同样的值,代表当前view包含总数
如:
第一次初始化滑动数据如下:
![]()
![](https://img-blog.csdn.net/20151124165255257?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
滑动一次:
![]()
![](https://img-blog.csdn.net/20151124165313410?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
滑动第二次:
![]()
上边方法参数的了解,可以更好的开发滑动对应的一些功能
3、getItemViewType(int position)
ListView中如果item会用到不同的布局,就会通过这个方法来判断当前使用那个 组建,使用方法和getView一样