ListView优化

1、ViewHolder模式提高效率
Viewholder模式利用了ListView的视图缓存机制,避免了每次在调用getView的时候都去通过findViewById实例化数据。
2、耗时操作放到异步线程中
比如说:加载图片
3、item错位
由于耗时操作,而且又用到了view的复用,可能会出现item错位
解决错位方法:可以为每一个item设置一个tag
4、加载数据量大的数据
1.设置本地缓存
2.分页加载:我们不用每次把ListView所有的Item都一次性加载完毕,这样做没必要也很累。我们仅仅需要加载那部分显示在屏幕部分的Item即可,这样所要加载的数据就减少了很多
3、滑动时停止加载:当用户滑动时,显示在屏幕的Item会不断的变化,如果只是加载显示在屏幕的Item,这也没有必要,因此我们应该在停止滑动时再加载数据。
让自定义的Adapter实现AbsListView.OnScrollListener接口

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        int start = firstVisibleItem;
        int end = firstVisibleItem + visibleItemCount;

        // 根据start end只加载可见区域的内容

    }

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        switch (scrollState) {
            case SCROLL_STATE_IDLE: // 滑动停止时
                // 进行加载

                break;
            case SCROLL_STATE_FLING: // 手指抛动时

                break;
            case SCROLL_STATE_TOUCH_SCROLL: // 正在滑动时
                // 不进行操作

                break;
            default:
                break;
        }
    }

引用:https://www.jianshu.com/p/f0408a0f0610

猜你喜欢

转载自blog.csdn.net/reuxfhc/article/details/80569779