Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 包裹列表<&燃气轮机;包含位图的自定义对象的_Android_Arraylist_Bitmap_Parcelable - Fatal编程技术网

Android 包裹列表<&燃气轮机;包含位图的自定义对象的

Android 包裹列表<&燃气轮机;包含位图的自定义对象的,android,arraylist,bitmap,parcelable,Android,Arraylist,Bitmap,Parcelable,我需要从一个活动传递到另一个活动的新闻列表(这是一个RSS阅读器),以便在ViewPager中显示它们 有关新闻的所有数据都存储在一个类中: public class SingleNew implements java.io.Serializable{ public String title; public String link; public Date date; public Bitmap image; } 因此,在第一个活动中,我已经下载了所有包含图

我需要从一个活动传递到另一个活动的新闻列表(这是一个RSS阅读器),以便在ViewPager中显示它们

有关新闻的所有数据都存储在一个类中:

public class SingleNew implements java.io.Serializable{

    public String title;
    public String link;
    public Date date;
    public Bitmap image;

}
因此,在第一个活动中,我已经下载了所有包含图像的新闻,为了避免在另一个活动中再次下载,我决定将它们作为可包裹对象传递给意图。所以我创建了我的定制包裹

public class CustomParcelable implements Parcelable {

    public List<SingleNew> news;

    public CustomParcelable(){
        news= new ArrayList<SingleNew>();
    }

    public CustomParcelable(Parcel in) {
        news= new ArrayList<SingleNew>();
        readFromParcel(in);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
         dest.writeList(news);
    }

    private void readFromParcel(Parcel in) {
        news = new ArrayList<SingleNew>();
        in.readList(news, List.class.getClassLoader());
    }

    public static final Parcelable.Creator CREATE = new Parcelable.Creator() {

         public CustomParcelable createFromParcel(Parcel parcel) {
              return new CustomParcelable(parcel);
         }

         public CustomParcelable[] newArray(int size) {
              return new CustomParcelable[size];
         }


    };
}
我知道如何将单个位图作为我的
CustomParcelable
对象的一个属性传递,但在这种情况下,我有一个
列表
,每个位图的内部都有位图,所以我不知道如何准备。

我还发现了关于位图的其他问题,但正如我所说,请解释如何作为单个属性传递,而不是作为自定义对象列表的属性传递


此外,我想问这是否是传递大量图像的最佳方式。我在另一个问题中读到,更合适的做法是将它们存储在内部存储器中,然后进行恢复。这是真的吗?或者这种方法是正确的?

使用位图的
字节[]
实例

使用这些函数在对象之间进行转换

 public static byte[] convert(Bitmap bitmap) throws IOException {
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG,100,stream);
    byte[] array = stream.toByteArray();
    stream.close();
    return array;


}
public static Bitmap convert(byte[] array) {
    return BitmapFactory.decodeByteArray(array,0,array.length);
} 

使用位图的
字节[]
实例

使用这些函数在对象之间进行转换

 public static byte[] convert(Bitmap bitmap) throws IOException {
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG,100,stream);
    byte[] array = stream.toByteArray();
    stream.close();
    return array;


}
public static Bitmap convert(byte[] array) {
    return BitmapFactory.decodeByteArray(array,0,array.length);
} 

使用位图的
字节[]
实例

使用这些函数在对象之间进行转换

 public static byte[] convert(Bitmap bitmap) throws IOException {
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG,100,stream);
    byte[] array = stream.toByteArray();
    stream.close();
    return array;


}
public static Bitmap convert(byte[] array) {
    return BitmapFactory.decodeByteArray(array,0,array.length);
} 

使用位图的
字节[]
实例

使用这些函数在对象之间进行转换

 public static byte[] convert(Bitmap bitmap) throws IOException {
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG,100,stream);
    byte[] array = stream.toByteArray();
    stream.close();
    return array;


}
public static Bitmap convert(byte[] array) {
    return BitmapFactory.decodeByteArray(array,0,array.length);
} 


我宁愿使用字符串url并将其传递给其他活动,然后从那里加载图像,而不是在对象中使用位图。位图是资源密集型的,如果创建大量包含位图的对象,很可能会遇到内存问题。我宁愿使用字符串url并将其传递到其他活动,然后从那里加载图像,而不是在对象中使用位图。位图是资源密集型的,如果创建大量包含位图的对象,很可能会遇到内存问题。我宁愿使用字符串url并将其传递到其他活动,然后从那里加载图像,而不是在对象中使用位图。位图是资源密集型的,如果创建大量包含位图的对象,很可能会遇到内存问题。我宁愿使用字符串url并将其传递到其他活动,然后从那里加载图像,而不是在对象中使用位图。位图是资源密集型的,如果你创建了很多包含位图的对象,你很可能会遇到内存问题。谢谢你这么快的回答。现在一切正常!顺便问一下,这是一个好的做法吗?我的意思是,用这种方式传递几个图像。离开网站之前,我会阅读20、30张可能是高分辨率的图片,我不知道它是否会崩溃。如果对你有帮助,请标记为答案谢谢。。不通过20、30个图像会导致内存溢出,特别是在有重载图像的情况下。导致分配内存的所有东西都会卡住并崩溃。在这种情况下,最好再次下载,而不是将其作为包裹传递?以下回答:1.将位图缩放到300x300或更低,取决于您的使用情况通常没有使用非常高比例图像的平板电脑/手机2。每次用户导航时下载部分新闻3.将图像保存在外部存储器中。。。再次取决于你的过程谢谢你这么快的回答。现在一切正常!顺便问一下,这是一个好的做法吗?我的意思是,用这种方式传递几个图像。离开网站之前,我会阅读20、30张可能是高分辨率的图片,我不知道它是否会崩溃。如果对你有帮助,请标记为答案谢谢。。不通过20、30个图像会导致内存溢出,特别是在有重载图像的情况下。导致分配内存的所有东西都会卡住并崩溃。在这种情况下,最好再次下载,而不是将其作为包裹传递?以下回答:1.将位图缩放到300x300或更低,取决于您的使用情况通常没有使用非常高比例图像的平板电脑/手机2。每次用户导航时下载部分新闻3.将图像保存在外部存储器中。。。再次取决于你的过程谢谢你这么快的回答。现在一切正常!顺便问一下,这是一个好的做法吗?我的意思是,用这种方式传递几个图像。离开网站之前,我会阅读20、30张可能是高分辨率的图片,我不知道它是否会崩溃。如果对你有帮助,请标记为答案谢谢。。不通过20、30个图像会导致内存溢出,特别是在有重载图像的情况下。导致分配内存的所有东西都会卡住并崩溃。在这种情况下,最好再次下载,而不是将其作为包裹传递?以下回答:1.将位图缩放到300x300或更低,取决于您的使用情况通常没有使用非常高比例图像的平板电脑/手机2。每次用户导航时下载部分新闻3.将图像保存在外部存储器中。。。再次取决于你的过程谢谢你这么快的回答。现在一切正常!顺便问一下,这是一个好的做法吗?我的意思是,用这种方式传递几个图像。离开网站之前,我会阅读20、30张可能是高分辨率的图片,我不知道它是否会崩溃。如果对你有帮助,请标记为答案谢谢。。不通过20、30个图像会导致内存溢出,特别是在有重载图像的情况下。导致分配内存的所有东西都会卡住并崩溃。在这种情况下,最好再次下载,而不是将其作为包裹传递?以下回答:1.将位图缩放到300x300或更低,取决于您的使用情况通常没有使用非常高比例图像的平板电脑/手机2。每次用户导航时下载部分新闻3.将图像保存在外部存储器中。。。这也取决于你的过程