当前位置: 首页 > 知识库问答 >
问题:

android OutOfMemoryError在使用

祁嘉木
2023-03-14

我正在使用RecyclerView创建一个应用程序。当我尝试在移动设备上滚动它时,我得到以下错误。

下面是RecyclerView的布局:

<?xml version="1.0" encoding="utf-8"?>

    <RelativeLayout 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/relative1">
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="480dp"
          android:scaleType="fitXY"
            android:id="@+id/imageView1"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="60dp"
                android:id="@+id/textView1"

                android:layout_centerHorizontal="true"
                android:layout_below="@+id/imageView1"
                android:textSize="35sp"
                android:textColor="#263238"/>
            <TextView
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:id="@+id/textView2"

                android:layout_centerHorizontal="true"
                android:layout_below="@+id/textView1"
                android:textSize="20sp"
                android:textColor="#263238"/>
    </RelativeLayout>

RecyclerView的类:

package com.example.sabudaniel61.ktdc;

import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * Created by Sabudaniel61 on 2015-10-15.
 */
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder>{
    HotelData[] hoteldata;public int count;View v1;MainActivity main;

    View view;
    RecyclerAdapter(HotelData[] hoteldata,MainActivity main) {

this.main=main;
        this.hoteldata = hoteldata;

    }

    @Override
    public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recyclerlayout, null);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
    }

    @Override
    public long getItemId(int position) {

        return super.getItemId(position);
    }

    @Override
    public void onBindViewHolder(RecyclerAdapter.ViewHolder viewHolder, int i) {
        viewHolder.imageView.setImageResource(hoteldata[i].getImageUrl());
        viewHolder.textView1.setText(hoteldata[i].getHotel());
        viewHolder.textView2.setText(hoteldata[i].getPlace());



    }

    @Override
    public int getItemCount() {
        return hoteldata.length;

    }

    public class ViewHolder extends RecyclerView.ViewHolder  {
        TextView textView1, textView2; RecyclerView recyclerView;
        ImageView imageView;

        public ViewHolder(final View itemLayoutView) {
            super(itemLayoutView);
            v1=itemLayoutView;
            textView1 = (TextView) itemLayoutView.findViewById(R.id.textView1);
            textView2 = (TextView) itemLayoutView.findViewById(R.id.textView2);

            imageView = (ImageView) itemLayoutView.findViewById(R.id.imageView1);
            count=getAdapterPosition();
            itemLayoutView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    MascotFragment mascotFragment = new MascotFragment();

                    FrameLayout layout = (FrameLayout) main.findViewById(R.id.frame);
                    layout.removeAllViews();
                    FragmentTransaction transaction = main.getSupportFragmentManager().beginTransaction();
                    transaction.replace(R.id.frame, mascotFragment).commit();
                }
            });

        }
//        public void clicks(){
//
//        v1.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                 count = getAdapterPosition();
//                if (count == 1) {
//                    Toast.makeText(v1.getContext(),"Clicked Bolgatty",Toast.LENGTH_LONG).show();
//
//                }
//
//            }});
//
//
//
//}

    }
    }

编辑代码:

package com.example.sabudaniel61.ktdc;

import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

/**
 * Created by Sabudaniel61 on 2015-10-15.
 */
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder>{
    HotelData[] hoteldata;public int count;View v1;MainActivity main;

    View view;
    RecyclerAdapter(HotelData[] hoteldata,MainActivity main) {

this.main=main;
        this.hoteldata = hoteldata;

    }

    @Override
    public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recyclerlayout, null);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
    }

    @Override
    public long getItemId(int position) {

        return super.getItemId(position);
    }

    @Override
    public void onBindViewHolder(RecyclerAdapter.ViewHolder viewHolder, int i) {
        viewHolder.imageView.setImageResource(hoteldata[i].getImageUrl());
        viewHolder.textView1.setText(hoteldata[i].getHotel());
        viewHolder.textView2.setText(hoteldata[i].getPlace());



    }

    @Override
    public int getItemCount() {
        return hoteldata.length;

    }

    public class ViewHolder extends RecyclerView.ViewHolder  {
        TextView textView1, textView2; RecyclerView recyclerView;
        ImageView imageView;

        public ViewHolder(final View itemLayoutView) {
            super(itemLayoutView);
            v1=itemLayoutView;
            textView1 = (TextView) itemLayoutView.findViewById(R.id.textView1);
            textView2 = (TextView) itemLayoutView.findViewById(R.id.textView2);

            imageView = (ImageView) itemLayoutView.findViewById(R.id.imageView1);
            Picasso.with(main).load(R.drawable.aryahomepage).into(imageView);
            Picasso.with(main).load(R.drawable.bolgattyhomepage).into(imageView);
            Picasso.with(main).load(R.drawable.mascothomepage).into(imageView);
            Picasso.with(main).load(R.drawable.waterhomepage).into(imageView);
            Picasso.with(main).load(R.drawable.samudrahomepage).into(imageView);
            Picasso.with(main).load(R.drawable.goldenhomepage).into(imageView);
            Picasso.with(main).load(R.drawable.rainhomepage).into(imageView);
            Picasso.with(main).load(R.drawable.periyarhomepage).into(imageView);
            Picasso.with(main).load(R.drawable.pepperhomepage).into(imageView);
            Picasso.with(main).load(R.drawable.nandanamhomepage).into(imageView);
            Picasso.with(main).load(R.drawable.tamarindhomepage).into(imageView);












            count=getAdapterPosition();
            itemLayoutView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    MascotFragment mascotFragment = new MascotFragment();

                    FrameLayout layout = (FrameLayout) main.findViewById(R.id.frame);
                    layout.removeAllViews();
                    FragmentTransaction transaction = main.getSupportFragmentManager().beginTransaction();
                    transaction.replace(R.id.frame, mascotFragment).commit();
                }
            });

        }
//        public void clicks(){
//
//        v1.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                 count = getAdapterPosition();
//                if (count == 1) {
//                    Toast.makeText(v1.getContext(),"Clicked Bolgatty",Toast.LENGTH_LONG).show();
//
//                }
//
//            }});
//
//
//
//}

    }
    }

共有1个答案

逄念
2023-03-14

尝试使用Picasso从资源可绘制文件夹加载您的图像

这可以通过使用以下代码来完成:

Picasso.with(context).load(R.drawable.drawableName).into(imageView);
 类似资料:
  • 如果我有一个带有查询参数的URL,那么“转义”该URL是否有效 前任。 vs. RFC 2396明确规定使用“ 我注意到的一件事是Chrome似乎原谅他们点击浏览器中的链接,但是当我查看页面的来源,并点击链接(/foo.html?cat=meow 我很想知道是否有任何规范/章节可以指出“仅限使用” (注意:当我开始使用一个以这种方式构造URL的代码库时,出现了这个问题,我个人会使用' RCF 23

  • 我正在处理一个构建无状态ejb计算器组件的项目,我的第一个错误是javax.ejb包不存在(即使在我查找并包含了jar之后)。问题是,我在网上看到的所有解决方案都是旧的……比如2006年的,最新的是2013-2015年的。这让它看起来像是一个过时的东西,也许有一个更好的方法。如果是的话,请给我建议。我使用的是Apache Netbeans和JDK15的最新版本。目前使用Java EE7(在我下面的

  • 希, 读了很多关于Spring AOP vs AspectJ的文章,我还是有些疑惑: 谢谢

  • 我一直试图获得一个简单的web操作来向API发出一个经过身份验证的get请求(我已经从示例代码中删除了实际的url和秘密)。 我已经在本地成功地运行了这一点,但是当我测试web动作时,它只是在记录“调用Axios”之后死亡。 它不会报告错误,我尝试实现一个承诺,认为线程在api响应之前就结束了,但没有效果。有什么线索吗?

  • 问题内容: 我想使用Android Studio使用Gradle构建工具开发应用程序。我无法在上插入存储库和库。我的文件如下: 如何在项目中添加OpenCV? 问题答案: 您可以在Android Studio中轻松完成此操作。 请按照以下步骤将Open CV作为库添加到您的项目中。 libraries在项目主目录下创建一个文件夹。例如,如果您的项目是OpenCVExamples,则将创建一个Ope

  • 我想使用Android Studio开发一个应用程序使用Gradle构建工具。我无法在上插入OpenCV repo和库。我的文件如下所示: 我如何在我的项目中添加OpenCV?