从服务器获取图像并在Android中设置为int数组

时间:2017-01-06 18:00:28

标签: android json android-volley

我想在整数数组中获取图像,就像在整数数组中使用R.drawable.img一样。

例如: String images[] = new String[1000];

当你从服务器拍摄图像时我想要这样。

阵列声明:

            public void onResponse(String response) {
            Log.d("TAG", "Message Response: " + response.toString());
            hideDialog();

            try {
                JSONObject jsonObj = new JSONObject(response);
                boolean error = false;
                p = jsonObj.getJSONArray("response");

                for (int i = 0 ; i < p.length(); i++) {

                    JSONObject c = p.getJSONObject(i);
                    String profilepicture = c.getString("profile_picture");

                    byte[] decodedString = Base64.decode(profilepicture, Base64.DEFAULT);
                    Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);


                    Drawable drawable = new BitmapDrawable(getResources(),decodedByte);

                    images[i] = drawable;

}

从服务器获取图像并将其设置为未发生的int数组。

android.graphics.drawable.BitmapDrawable@269a3b6d

可绘制值为list1 = [1,1,1,1,1,1,2,3,4,4,5,1,2] #This is 20M long! list2 =[another list of size len(list1)]#This is also 20M long! i = 0 while i < len(list)-1: if list[i] == list[i+1]: del list1[i] del list2[i] else: i = i+1 。但它没有设置整数数组。

2 个答案:

答案 0 :(得分:2)

您正在获得Drawable。您无法将Drawable保存为整数数组或String数组 - 您必须将其设为Drawable数组。这种方法真的不推荐,因为你将所有图像存储在内存中,这将占用大量内存。如果它是一个非平凡的数字,你可能会遇到OOM异常。就此而言,也不建议将所有这些图像作为Base64编码的字符串发送。更好的方法是让服务器发送下载图像的URL,并在您确定需要时下载它。

答案 1 :(得分:1)

为drawable创建一个数组然后它可以工作,你可以通过它的整数索引从该数组中获取图像。但你正在尝试的情况是,你可以通过调试代码获得该数字BitmapDrawable @ 269a3b6d吗?对?这是对memorey中对象的引用,而不是整数!所以不要试图把它放在整数数组中。 现在要么使你的数组​​类型可绘制,要么改变你的场景!