GridView的例子不工作 [英] GridView example not working
问题描述
我以帮助,从这个链接:的Android 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屋!