在gridview中显示库中的大量照片

时间:2014-07-23 15:04:49

标签: android android-gridview picasso android-adapterview

我创建了一个示例代码,用于从库中加载所有图像并将它们显示在GridView中。

我正在使用picasso open source library来显示图片。

GridView卷轴非常慢,我想要一次显示1000多张图片。

这是我获取图像的代码,这是一个基本光标。

paths = new ArrayList<String>();
cursor = getActivity().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
if (cursor != null) {
    for (int i = 0; i < cursor.getCount(); i++) {
        cursor.moveToPosition(i);
        paths.add(cursor.getString(1));
    }

}

以下代码是显示图片的getview()中的BaseAdpter实现。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    SquaredImageView iv = (SquaredImageView) convertView;
    if (iv == null) {
        iv = new SquaredImageView(inflater.getContext());
    }
    String url = data.get(position);

    Picasso.with(inflater.getContext()).load(new File(url)).into(iv);
    return iv;
}



/** An image view which always remains square with respect to its width. */
final public class SquaredImageView extends ImageView {
    public SquaredImageView(Context context) {
        super(context);
    }

    public SquaredImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth());
    }
}

1 个答案:

答案 0 :(得分:0)

您应该只显示屏幕上当前可见的照片,也可以预先加载它们上方和下方的照片。当他们离开屏幕时,你应该摆脱它们以清除记忆。

使用gridView.setOnScrollListener侦听滚动。在onScroll()事件中,使用参数firstVisibleItemvisibleItemCount来计算要显示和隐藏的视图。