GridView的例子不工作 [英] GridView example not working

查看:161
本文介绍了GridView的例子不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我以帮助,从这个链接:的Andr​​oid GridView控件布局教程。当我运行我的应用程序我的应用程序停止工作。我收到以下错误。 我要创建的GridView,显示在点击GridView和全尺寸图像的缩略图。为此,我现在的储蓄缩略图,并在绘制每个图像的完整图像。如何做到这一点?请帮助我。

ImageAdapter类 -

 公共类ImageAdapter延伸BaseAdapter {
    私人语境mContext;    公共整数[] = mThumbIds {
            R.drawable.kri1,R.drawable.kri2,
            R.drawable.kri3,R.drawable.kri4,
            R.drawable.kri5,R.drawable.kri6,
            R.drawable.kri7,R.drawable.kri8,
            R.drawable.kri9,R.drawable.kri7,R.drawable.kri8,
            R.drawable.kri9,R.drawable.kri7,R.drawable.kri8,
            R.drawable.kri9
    };    //构造
    公共ImageAdapter(上下文C){
        mContext = C;
    }    @覆盖
    公众诠释的getCount(){
        返回mThumbIds.length;
    }    @覆盖
    公共对象的getItem(INT位置){
        返回mThumbIds [位置]
    }    @覆盖
    众长getItemId(INT位置){
        返回0;
    }    @覆盖
    公共查看getView(INT位置,查看convertView,父母的ViewGroup){
        ImageView的ImageView的=新ImageView的(mContext);
        imageView.setImageResource(mThumbIds [位置]);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(新GridView.LayoutParams(70,70));
        返回ImageView的;
    }}

logcat的 -

 七月2日至20日:06:19.930:E / AndroidRuntime(2541):致命异常:主要
7月2日至20日:06:19.930:E / AndroidRuntime(2541):工艺:com.example.gridview,PID:2541
7月2日至20日:06:19.930:E / AndroidRuntime(2541):java.lang.OutOfMemoryError
7月2日至20日:06:19.930:E / AndroidRuntime(2541):在android.graphics.BitmapFactory.nativeDe $ C $检测板(本机方法)
7月2日至20日:06:19.930:E / AndroidRuntime(2541):在android.graphics.BitmapFactory.de codeStream(BitmapFactory.java:575)
7月2日至20日:06:19.930:E / AndroidRuntime(2541):在android.graphics.BitmapFactory.de codeResourceStream(BitmapFactory.java:410)
7月2日至20日:06:19.930:E / AndroidRuntime(2541):在android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
7月2日至20日:06:19.930:E / AndroidRuntime(2541):在android.content.res.Resources.loadDrawable(Resources.java:2110)
7月2日至20日:06:19.930:E / AndroidRuntime(2541):在android.content.res.Resources.getDrawable(Resources.java:700)
7月2日至20日:06:19.930:E / AndroidRuntime(2541):在android.widget.ImageView.resolveUri(ImageView.java:638)
7月2日至20日:06:19.930:E / AndroidRuntime(2541):在android.widget.ImageView.setImageResource(ImageView.java:367)


解决方案

您正在使用高分辨率的图像,以便它给堆巨大的负荷。相反,尝试下来,你正在使用 getView()

采样图像

  BitmapFactory.Options选项=新BitmapFactory.Options();
//这里您需要的设置选项
BitmapFactory.de codeResource(背景下,yourImageId,期权);

I am taking help from this link: Android GridView Layout Tutorial. When I run my app my app stop working. I am getting following errors. I want to create gridview that show thumbnail images in gridview and full size image on click. For this I am saving thumbnail and full image of each image in drawable. How to do this? please help me.

ImageAdapter class-

public class ImageAdapter extends BaseAdapter {
    private Context mContext;

    public Integer[] mThumbIds = {
            R.drawable.kri1, R.drawable.kri2,
            R.drawable.kri3, R.drawable.kri4,
            R.drawable.kri5, R.drawable.kri6,
            R.drawable.kri7, R.drawable.kri8,
            R.drawable.kri9,R.drawable.kri7, R.drawable.kri8,
            R.drawable.kri9, R.drawable.kri7, R.drawable.kri8,
            R.drawable.kri9
    };

    // Constructor
    public ImageAdapter(Context c){
        mContext = c;
    }

    @Override
    public int getCount() {
        return mThumbIds.length;
    }

    @Override
    public Object getItem(int position) {
        return mThumbIds[position];
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView = new ImageView(mContext);
        imageView.setImageResource(mThumbIds[position]);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(new GridView.LayoutParams(70, 70));
        return imageView;
    }

}

Logcat-

02-20 07:06:19.930: E/AndroidRuntime(2541): FATAL EXCEPTION: main
02-20 07:06:19.930: E/AndroidRuntime(2541): Process: com.example.gridview, PID: 2541
02-20 07:06:19.930: E/AndroidRuntime(2541): java.lang.OutOfMemoryError
02-20 07:06:19.930: E/AndroidRuntime(2541):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
02-20 07:06:19.930: E/AndroidRuntime(2541):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:575)
02-20 07:06:19.930: E/AndroidRuntime(2541):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:410)
02-20 07:06:19.930: E/AndroidRuntime(2541):     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
02-20 07:06:19.930: E/AndroidRuntime(2541):     at android.content.res.Resources.loadDrawable(Resources.java:2110)
02-20 07:06:19.930: E/AndroidRuntime(2541):     at android.content.res.Resources.getDrawable(Resources.java:700)
02-20 07:06:19.930: E/AndroidRuntime(2541):     at android.widget.ImageView.resolveUri(ImageView.java:638)
02-20 07:06:19.930: E/AndroidRuntime(2541):     at android.widget.ImageView.setImageResource(ImageView.java:367)

解决方案

You are using high resolution images so it gives great load on heap. Instead try down sampling images you are using on getView().

BitmapFactory.Options options = new BitmapFactory.Options();
// set options for your need here
BitmapFactory.decodeResource(context, yourImageId, options);

这篇关于GridView的例子不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆