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

来源:互联网 发布:淘宝买iphone7推荐店铺 编辑:程序博客网 时间:2024/04/28 20:53

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);//滑动时暂停加载资源
             }
        }
    }
0 0