将图像从解析添加到int []

时间:2016-08-14 20:39:34

标签: android listview parse-platform

我有自定义列表视图。

class CustomAdapter extends ArrayAdapter<String> {

int[] images = {};
String[] names = {};



public CustomAdapter(Context context, String[] names, int[] images) {
    super(context, R.layout.custom_row, names);

    this.images = images;
    this.names = names;

}

public class ViewHolder {

    TextView username;
    ImageView imageView2;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater layoutInflater = LayoutInflater.from(getContext());

    View customView = layoutInflater.inflate(R.layout.custom_row, parent, false);

    final ViewHolder holder = new ViewHolder();

    holder.username = (TextView) customView.findViewById(R.id.username);
    holder.imageView2 = (ImageView) customView.findViewById(R.id.imageView2);

    holder.imageView2.setImageResource(images[position]);
    holder.username.setText(names[position]);

    return customView;

}

}

我正在尝试从解析中下载图像并将其显示在列表视图中。

ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Profile");

    query.whereEqualTo("username", ParseUser.getCurrentUser().getUsername());

    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> list, ParseException e) {

            if (e == null) {

                if (list.size() > 0) {

                    for (ParseObject object : list) {

                        final ParseFile file = (ParseFile) object.get("profilePicture");

                        file.getDataInBackground(new GetDataCallback() {
                            @Override
                            public void done(byte[] bytes, ParseException e) {

                                //it gets to here

                                if (e == null) {

                                    Log.i("AppInfo", "I am here");

                                    Bitmap image = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);



                                    Log.i("AppInfo", "I am here2");

                                    Log.i("AppInfo", "I am here3");






                                } else {
                                    e.printStackTrace();
                                }

                            }
                        });

                    }

                }

            }

        }
    });

我无法下载图片并将其显示在自定义列表视图中。我遇到的问题是来自解析的图像必须存储在int []中,否则“holder.imageView2.setImageResource(images [position]);”将永远不会工作,因为它需要一个int []来获得这个位置。 int []确实有效,因为我已经使用存储在手机上的图像进行了测试(不是从解析中下载并存储,在应用启动之前预先存储)。如果有更好的方法可以创建带图像的自定义列表视图,请通知我。

1 个答案:

答案 0 :(得分:0)

你做错了。 TileUpdater正在做其他事情。资源文件夹中的所有文件都被编入索引并存储为imageView2.setImageResource(int)索引,可以引用为int。因此,使用该功能,您只能加载本地文件。你需要的是:

R.drawable.name_of_the_local_image

修改: 我从Parse找到了一些代码示例,也许您应该使用他们的UI类,如Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); holder.imageView2.setImageBitmap(bmp); ParseImageViewParseQueryAdapter

ParseImageView

对于您的查询,请尝试使用ParseFile parseFile = parseObject.getParseFile("image"); ParseImageView parseImageView = (ParseImageView)findViewById(R.id.parse_image_view); imageView.setParseFile(paresFile); imageView.loadInBackground(); 作为objectType:ParseUser