我对一个问题感到非常沮丧。如何访问内部类中的数据。我正在使用Parse作为我的新应用程序的后端,但是所有的解析方法都是匿名使用的,并且是内部类,因此我无法真正访问任何检索到的内容。有办法吗?
我尝试过这个并没有用。一切都需要是最终的,决赛不能在内部阶级中改变。
这是我的代码。
imageView_intro = (ImageView)findViewById(R.id.imageView_intro);
List<Bitmap> list = new ArrayList<Bitmap>();
BackEndUtils.downloadIntroImage(list);
imageView_intro.setImageBitmap(list.get(0));
public static void downloadIntroImage(final List<Bitmap> list){
ParseQuery query = new ParseQuery("Intro");
query.whereEqualTo("name","intro");
//BEUFindCallBack beuFindCallBack = new BEUFindCallBack("image");
query.findInBackground(new FindCallback<ParseObject> (){
@Override
public void done(List<ParseObject> parseObjects, com.parse.ParseException e) {
for(ParseObject tempObject: parseObjects){
ParseFile tempFile = (ParseFile)tempObject.get("image");
tempFile.getDataInBackground(new GetDataCallback() {
@Override
public void done(byte[] bytes, com.parse.ParseException e) {
list.add(bytesToBitMap(bytes));
}
});
}
}
});
}
public static Bitmap bytesToBitMap(byte[] bytes){
Bitmap bitmap = BitmapFactory
.decodeByteArray(
bytes, 0,
bytes.length);
return bitmap;
}
最后,列表的大小仍为0 ...意味着实际上没有添加任何内容。如何访问byte[]
变量并退出内部类??
奇怪的是,如果我发送图像视图并在内部类中设置bitmapimage,它就可以工作。但我希望能够将字节数组从内部匿名类中取出并保存到某个地方,以便以后可以使用它。
答案 0 :(得分:1)
如果您正在使用com.parse.ParseFile
,请使用getData()
等待数据。请勿使用getDataInBackground()
。
ParseQuery
相同,请使用find()
。
您的问题是BackEndUtils.downloadIntroImage(list)
在检索数据之前返回,因此imageView_intro.setImageBitmap(list.get(0))
会看到一个空列表。
答案 1 :(得分:0)
如果有人遇到此问题或任何其他类似问题,则此特定情况是由后台线程未按时完成而导致未按预期返回值引起的。这就是为什么它使用getData而不是getDataInBackground。