向上或向下滚动时应用程序崩溃

Application crashes when I scroll up or down

我是 Android Studio 的新手,遇到了问题。我有一个 android 应用程序,如果我向上或向下滚动,它会崩溃,前 12 个图像显示正常,但我似乎无法滚动查看我编码的其他图像。

main_activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout">

<RelativeLayout
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

</RelativeLayout>


<ListView
    android:layout_width="200dp"
    android:layout_height="match_parent"
    android:id="@+id/lv_sliding_menu"
    android:background="#FFFFFF"
    android:choiceMode="singleChoice"
    android:layout_gravity="start"/>

<GridView
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:columnWidth="128dp"
    android:numColumns="auto_fit"
    android:stretchMode="columnWidth"
    android:gravity="center"/>

ImageAdapter.java:

public class ImageAdapter extends BaseAdapter {
private Context mContext;

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

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

public Object getItem(int position) {
    return null;
}

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

// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;

    if (convertView == null) {
        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(260, 260));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    }
    else
    {
        imageView = (ImageView) convertView;
    }
    imageView.setImageResource(mThumbIds[position]);
    return imageView;
}

// Keep all Images in array
public Integer[] mThumbIds = {
        R.drawable.img1, R.drawable.img2,
        R.drawable.img3, R.drawable.img4,
        R.drawable.img5, R.drawable.img6,
        R.drawable.img7, R.drawable.img8,
        R.drawable.img9, R.drawable.img10,
        R.drawable.img11, R.drawable.img12,
        R.drawable.img13, R.drawable.img14,
        R.drawable.img15, R.drawable.img16,
};
}

MainActivity.java:

    gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new ImageAdapter(this));

日志广播:

04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime: FATAL EXCEPTION: main
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime: Process: app.tvtracker.kls.tvtracker, PID: 3875
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime: java.lang.OutOfMemoryError
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:594)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:429)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.content.res.Resources.loadDrawable(Resources.java:2110)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.content.res.Resources.getDrawable(Resources.java:700)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.widget.ImageView.resolveUri(ImageView.java:638)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.widget.ImageView.setImageResource(ImageView.java:367)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at app.tvtracker.kls.tvtracker.ImageAdapter.getView(ImageAdapter.java:43)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.widget.AbsListView.obtainView(AbsListView.java:2255)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.widget.GridView.makeAndAddView(GridView.java:1345)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.widget.GridView.makeRow(GridView.java:345)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.widget.GridView.fillDown(GridView.java:287)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.widget.GridView.fillGap(GridView.java:247)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5143)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.widget.AbsListView.onGenericMotionEvent(AbsListView.java:3811)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.View.dispatchGenericMotionEventInternal(View.java:7801)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.View.dispatchGenericMotionEvent(View.java:7782)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.View.dispatchGenericMotionEvent(View.java:7775)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.View.dispatchGenericMotionEvent(View.java:7775)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.View.dispatchGenericMotionEvent(View.java:7775)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.View.dispatchGenericMotionEvent(View.java:7775)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.View.dispatchGenericMotionEvent(View.java:7775)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:1824)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewGroup.dispatchGenericPointerEvent(ViewGroup.java:1777)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.View.dispatchGenericMotionEvent(View.java:7775)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchGenericMotionEvent(PhoneWindow.java:2076)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow.superDispatchGenericMotionEvent(PhoneWindow.java:1525)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.app.Activity.dispatchGenericMotionEvent(Activity.java:2494)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.support.v7.internal.view.WindowCallbackWrapper.dispatchGenericMotionEvent(WindowCallbackWrapper.java:70)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchGenericMotionEvent(PhoneWindow.java:2030)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.View.dispatchPointerEvent(View.java:7888)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3947)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3575)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
04-13 08:21:36.583 3875-3875/app.tvtracker.kls.tvtracker E/AndroidRuntime:  at android.vi
04-13 08:21:39.051 3875-3875/? I/Process: Sending signal. PID: 3875 SIG: 9

您收到 OutOfMemoryException。这正是它所说的。您的 ListView 项目的内容可能太多而无法处理。确保您没有使用文件大小过大的图像。