从内部 class 获取数据
Getting data out of a inner class
我一直对一个问题感到非常沮丧。如何访问我在内部 class 中获得的数据。我在我的新应用程序的后端使用 Parse,但所有解析方法都是匿名使用的并且是内部 classes,所以我无法真正访问检索到的任何内容。有解决办法吗?
我试过了,没用。一切都必须是最终的,最终不能在内部 class.
内更改
这是我的代码。
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[]
变量并拉出内部 class!?
奇怪的是,如果我发送图像视图并在内部 class 中设置位图图像,它就可以工作。但我希望能够从内部匿名 class 中取出字节数组并将其保存在某个地方,以便稍后处理。
如果您使用 com.parse.ParseFile
,则使用 getData()
等待数据。不要使用 getDataInBackground()
.
与 ParseQuery
相同,使用 find()
。
您的问题是 BackEndUtils.downloadIntroImage(list)
returns 在检索数据之前,因此 imageView_intro.setImageBitmap(list.get(0))
将看到一个空列表。
如果有人遇到此问题或任何其他类似问题,则此特定情况是由后台线程未按时完成并因此未按预期返回值引起的。这就是使用 getData 而不是 getDataInBackground 的原因。
我一直对一个问题感到非常沮丧。如何访问我在内部 class 中获得的数据。我在我的新应用程序的后端使用 Parse,但所有解析方法都是匿名使用的并且是内部 classes,所以我无法真正访问检索到的任何内容。有解决办法吗?
我试过了,没用。一切都必须是最终的,最终不能在内部 class.
内更改这是我的代码。
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[]
变量并拉出内部 class!?
奇怪的是,如果我发送图像视图并在内部 class 中设置位图图像,它就可以工作。但我希望能够从内部匿名 class 中取出字节数组并将其保存在某个地方,以便稍后处理。
如果您使用 com.parse.ParseFile
,则使用 getData()
等待数据。不要使用 getDataInBackground()
.
与 ParseQuery
相同,使用 find()
。
您的问题是 BackEndUtils.downloadIntroImage(list)
returns 在检索数据之前,因此 imageView_intro.setImageBitmap(list.get(0))
将看到一个空列表。
如果有人遇到此问题或任何其他类似问题,则此特定情况是由后台线程未按时完成并因此未按预期返回值引起的。这就是使用 getData 而不是 getDataInBackground 的原因。