ListView与ViewPager学习总结

ListView与ViewPager学习总结

ListView

  • 使用场景
        ListView能实现大量同类数据的排序显示,它是软件开发过程中最常使用的控件之一,由于有时需要展示大量的数据,为了提高效率,我们常常会对其中的一些细节进行改良,所以它也是最难使用的控件之一。
        我们常见ListView于微信聊天的界面,朋友圈的界面,好友列表等等。
  • 使用方式
        XML 文件中声明 ListView 控件,在 Java 文件中获取 ListView 的实例;新建一个继承与 BaseAdapter 的 adapter 类,向类中传入列表内容;向 ListView 实例中设置这个 adapter 的实例;通过notifiedDataChange()方法更新数据。
        若要实现定制的ListView界面,例如加入小图标等等,则将小图标的图片复制粘贴到drawable文件(我使用的是png格式),每个图标都会有一个ID,在类中通过选定ID来实现想要展示的内容。
  • 性能优化
        ListView 在滑动加载时,消耗的资源是非常多的,如果列表中加载项目比较多,就有可能产生卡顿,所以我们需要优化 ListView 的性能。而ListView 的加载列表,实在我们自定义的 adapter 中实现的,所以,要想优化性能,我们就需要去 adapter 中进行改进。
        adapter中加载列表的方法是在 getView()方法中,Android 本身通过 convertView 给我们提供了一个缓存,但我们还可以进一步优化 ListView 的性能。

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = new ViewHolder();
        if (convertView == null){
            convertView = LayoutInflater.from(context).inflate(R.layout.listview_item, null);
            holder.imageView = (ImageView) convertView.findViewById(R.id.item_image);
            holder.textView = (TextView) convertView.findViewById(R.id.item_string);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        holder.imageView.setImageResource(items.get(position).getImageId());

        holder.textView.setText(items.get(position).getText());

        return convertView;
    }
    // 通过 ViewHolder 避免每次都通过 findViewById()方法去实例控件
    class ViewHolder{
        ImageView imageView;
        TextView textView;
    }
}

    通过 ViewHolder 来持有控件实例,避免每次都通过 findViewById()方法去实例化控件,可以提升 50% 以上的效率。
    当存在大量数据或者是滑动加载过快时,就会存在性能瓶颈,当然,改良性能需要根据实际情况对代码进行优化提升,这里只是举个例子。

ViewPager

    ViewPager在我们的开发中用到的非常多,现在基本每个页面都需要用到它,和ListView一样频繁。
- 简介
     ViewPager是视图翻页工具,提供了多页面切换的效果,可以实现轮播图。它是 android 扩展包 v4 包中的类(使用时需要导入该包),ViewPager 需要一个 PagerAdapter 适配器类给它提供数据,简单来说就是我们通过创建adapter给它填充多个view,左右滑动时,切换不同的view。ViewPager 经常和 Fragment 一起使用,并且提供了专门的FragmentPagerAdapter 和FragmentStatePagerAdapter 类供 Fragment 中的 ViewPager 使用。
    Google官方是建议我们使用Fragment来填充ViewPager的,这样 可以更加方便的生成每个Page,以及管理每个Page的生命周期

  • 使用方式
        和其他控件一样,在使用ViewPager时也需要在XML文件中进行声明和引用,创建直接PagerAdapter或其子类以提供view。
    xml布局:

    
    

学习总结

    ListView和ViewPager都是在软件开发过程中使用最为广泛的控件,作为控件,它们都有一些共同的特性,例如要在xml文件中声明和对一些属性进行定制;此外,它们又比其他一些简单的控件显得高级许多,例如ListView可以实现图标的插入(本人接触安卓开发以来第一次用到),ViewPager则可以实现轮播图功能,这些功能在我们日常接触的软件中都是很常见的,且这也是面试时常被问及的知识,所以熟练掌握它们显得十分重要。

猜你喜欢

转载自blog.csdn.net/weixin_41897234/article/details/80946787