2016-04-13 5 views
-1

Я новичок в Android Studio и столкнулся с проблемой. У меня есть андроид приложение, которое происходит сбой, если я прокрутки вверх или вниз, первые 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)); 

Logcast:

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 
+0

Какая ошибка? OOM? изображения слишком большие ... NPE? проверьте, что является нулевым и исправить это ... – Selvin

+0

Я изначально не опубликовал полный протокол, извинения. – Luke

ответ

-1

Вы получаете в OutOfMemoryException. Это именно то, что он говорит. Содержимое элементов ListView, вероятно, слишком много для обработки. Убедитесь, что вы не используете изображения с большим размером файла.

+0

Спасибо, я загляну в него – Luke

+0

* Убедитесь, что вы не используете изображения с большим размером файла. * <= Not true ... большой размер файла не является проблемой ... размер (ширина * высота) это проблема ... (fx весь белый png с разрешением 4k будет иметь малый размер, но он вызовет OOME) – Selvin

+0

как извлекаемый из такого файла займет 35 МБ ОЗУ (4096 x 2160 x 4 байта) – Selvin

Смежные вопросы