关于listview的快速滑动时的优化

本文介绍了对ListView进行性能优化的方法,主要通过ViewHolder减少视图复用时的内存消耗,并展示了如何在ListView快速滑动时避免不必要的资源加载,通过设置滑动监听事件实现优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,首先是listview的常规优化,当然是依据 viewhodler节省内存加载资源(部分例子代码)

@Override
        public View getView(int position, android.view.View convertView, ViewGroup parent) {

            ViewHolder holder = null;
            if (convertView == null) {
                holder = new ViewHolder();
                convertView = getLayoutInflater().inflate(R.layout.layout, parent, false);
                holder.subject = (TextView) convertView.findViewById(R.id.subject);
                holder.summary = (TextView) convertView.findViewById(R.id.summary);
                holder.img = (ImageView) convertView.findViewById(R.id.imageView);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.subject.setText(data.get(position).getSubject());
            holder.summary.setText(data.get(position).getSummary());
            PicassoUtils.loadImageWithSize(MainActivity.this, "http://litchiapi.jstv.com" + data.get(position).getCover(), 400, 300, holder.img);

            return convertView;
        }
    }

/**

 *设置ViewHolder ,以便快速初始化
 */
    private static class ViewHolder {
        TextView subject;
        TextView summary;
        ImageView img;
    }


2,当listview快速滑动时,不需要加载内存资源,设置滑动监听事件

(1),listView.setOnScrollListener(new ListScroller());//添加滚动事件(部分代码)


(2), /**

*添加listView滚动监听事件,
*/

    public class ListScroller implements AbsListView.OnScrollListener{
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        }

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
              final Picasso picasso = Picasso.with(MainActivity.this);
             if (scrollState==SCROLL_STATE_IDLE||scrollState==SCROLL_STATE_TOUCH_SCROLL){
                  picasso.resumeTag(MainActivity.this);//停止滑动时加载资源
             }else{
                  picasso.pauseTag(MainActivity.this);//滑动时暂停加载资源
             }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值