美文网首页
ListView的优化

ListView的优化

作者: 洪_1127 | 来源:发表于2020-03-22 13:06 被阅读0次

ListView的显示与缓存机制

我们知道,ListView、GridView等控件可以展示大量的数据信息。假如下图中的ListView可以展示100条信息,但是屏幕的尺寸是有限的,一屏幕只能显示下图中的7条。当向上滑动ListView的时候,item1被滑出了屏幕区域,那么系统就会将item1回收到Recycler中,即View缓冲池中,而将要显示的item8则会从缓存池中取出布局文件,并重新设置好item8需要显示的数据,并放入需要显示的位置。这就是ListView的缓冲机制,总结起来就是一句话:需要时才显示,显示完就被会收到缓存。ListView,GridView等数据显示控件通过这种缓存机制可以极大的节省系统资源。


listview.png

优化一

convertView的使用,优化加载布局

if (convertView == null) {
    convertView = mInflater.inflate(R.layout.item_test, null);
}

优化二

内部类ViewHolder的使用,优化加载控件

        @Override
        //返回每一项的显示内容
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder;
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.item_test, null);

                viewHolder = new ViewHolder();
                viewHolder.imageView = convertView.findViewById(R.id.iv_image);
                viewHolder.title = convertView.findViewById(R.id.tv_title);
                viewHolder.content = convertView.findViewById(R.id.tv_content);

                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            News news = mList.get(position);
            if (news != null) {
                viewHolder.imageView.setImageResource(news.itemImageResId);
                viewHolder.title.setText(news.title);
                viewHolder.content.setText(news.content);
            }
            return convertView;
        }

        class ViewHolder {
            public ImageView imageView;
            public TextView title;
            public TextView content;
        }

相关文章

网友评论

      本文标题:ListView的优化

      本文链接:https://www.haomeiwen.com/subject/edghyhtx.html