Android如何提高ListView的滑动效率

如何提高ListView的滚动速度,ListView的滚动速度的提高在于getView方法的实现,通常我们的getView方法会这样写:

[java] view
plain
copy

  1. View getView(int position,View convertView,ViewGroup parent){

  2. //首先构建LayoutInflater

  3. LayoutInflater factory = LayoutInflater.from(context);

  4. View view = factory.inflate(R.layout.id,null);

  5. //然后构建自己需要的组件

  6. TextView text = (TextView) view.findViewById(R.id.textid);

  7. .

  8. .

  9. return view;

  10. }

这样ListView的滚动速度其实是最慢的,因为adapter每次加载的时候都要重新构建LayoutInflater和所有你的组件.而下面的方法是相对比较好的:

[java] view
plain
copy

  1. View getView(int position,View contertView,ViewGroup parent){

  2. //如果convertView为空,初始化convertView

  3. if(convertView == null)

  4. {

  5. LayoutInflater factory = LayoutInfater.from(context);

  6. convertView = factory.inflate(R.layout.id,null);

  7. }

  8. //然后定义你的组件

  9. (TextView) convertView.findViewById(R.id.textid);

  10. return convertView;

  11. }

[html] view
plain
copy

  1. 这样做的好处就是不用每次都重新构建convertView,基本上只有在加载第一个item时会创建convertView,这样就提高了adapter的加载速度,从而提高了ListView的滚动速度.而下面这种方法则是最好的:

[java] view
plain
copy

    1. //首先定义一个你 用到的组件的类:

    2. static class ViewClass{

    3. TextView textView;

    4. .

    5. .

    6. }
    7. View getView(int position,View convertView,ViewGroup parent){

    8. ViewClass view ;

    9. if(convertView == null){

    10. LayoutInflater factory = LayoutInflater.from(context);

    11. convertView = factory.inflate(R.layout.id,null);

    12. view = new ViewClass();

    13. view.textView = (TextView)

    14. convertView.findViewById(R.id.textViewid);

    15. .

    16. .

    17. convertView.setTag(view);

    18. }else{

    19. view =(ViewClass) convertView.getTag();

    20. }

    21. //然后做一些自己想要的处理,这样就大大提高了adapter的加载速度,从而大大提高了ListView的滚动速度问题.
    22. }

Android如何提高ListView的滑动效率,布布扣,bubuko.com

时间: 2024-10-26 08:42:05

Android如何提高ListView的滑动效率的相关文章

Android 监听ListView、GridView滑动到底部

// 监听listview滚到最底部mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { // 当不滚动时 case OnScrollListener.SCROLL_STATE_IDLE: // 判断滚动到底部 if (view.get

【转】Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果

原文网址:http://blog.csdn.net/xiaanming/article/details/17539199 我在上一篇文章中Android 带你从源码的角度解析Scroller的滚动实现原理从源码的角度介绍了Scroller的滚动实现原理,相信大家对Scroller的使用有一定的了解,这篇文章就给大家带来使用Scroller的小例子,来帮助大家更加熟悉的掌握Scroller的使用,掌握好了Scroller的使用我们就能实现很多滑动的效果.例如侧滑菜单,launcher,ListVi

本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18311877)Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果

今天还是给大家带来自定义控件的编写,自定义一个ListView的左右滑动删除Item的效果,这个效果之前已经实现过了,有兴趣的可以看下Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果,之前使用的是滑动类Scroller来实现的,但是看了下通知栏的左右滑动删除效果,确实很棒,当我们滑动Item超过一半的时候,item的透明度就变成了0,我们就知道抬起手指的时候item就被删除了,当item的透明度不为0的时候,我们抬起手指Item会回到起始位置,这样我们就知道

Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果

今天还是给大家带来自定义控件的编写,自定义一个ListView的左右滑动删除Item的效果,这个效果之前已经实现过了,有兴趣的可以看下Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果, 之前使用的是滑动类Scroller来实现的,但是看了下通知栏的左右滑动删除效果,确实很棒,当我们滑动Item超过一半的时候,item的透明度就变 成了0,我们就知道抬起手指的时候item就被删除了,当item的透明度不为0的时候,我们抬起手指Item会回到起始位置,这样我们就

android listview左右滑动分页(viewpager嵌套listview进行分页),焦点图带圆焦点

1.先上图后说话 2.代码 package com.example.exmp; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.os.Parcelable; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import and

[转]Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果

我在上一篇文章中Android 带你从源码的角度解析Scroller的滚动实现原理从源码的角度介绍了Scroller的滚动实现原理,相信大家对Scroller的使用有一定的了解,这篇文章就给大家带来使用Scroller的小例子,来帮助大家更加熟悉的掌握Scroller的使用,掌握好了Scroller的使用我们就能实现很多滑动的效果.例如侧滑菜单,launcher,ListView的下拉刷新等等效果,我今天实现的是ListView的item的左右滑动删除item的效果,现在很多朋友看到这个效果应该

Android中不同方向嵌套滑动的解决方式(ListView为样例)

前言: 就像手机QQ的聊天消息列表.一个纵向滑动的ListView列举全部消息,但每一条消息能够横向滑动. 而默认情况下,仅仅能有一个地方消化处理触摸事件,要么ListView吃掉这个事件.要么子Item中能滑动的部件吃掉.两者互相冲突. 是否认为非常分裂?实现起来事实上不复杂. 理解了以后,能够方便延伸到GridView,ViewPager,ScrollView等等滑动控件. 假设对Andoroid触摸事件传递过程不熟悉,请看这里: 为了最简单表达实现方法,我以一个LinearLayout为L

Android 自定义ScrollView ListView 体验各种纵向滑动的需求

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38950509,本文出自[张鸿洋的博客] 1.概述 群里的一个哥们有个需求是这样的:问题:主要功能就是:1.循环的一个滑动:2.每次滑动结束,保持每个Item的完整.然后我当时给他写了个Demo,所有代码都在Activity里面,后期看来其太恶心了,修改也不方便:貌似那哥们还因为那代码修改到12点,大大的赞一下这哥们的毅力,也深表歉意,今天特意把代码抽取成自定义的ScrollVi

android ScrollView 嵌套 ListView 不让listView滑动

1.重写listview的onMeasure() /** * 解决listview高度显示不正确 */ public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, exp