Я действительно разочарован проблемой. Как получить доступ к данным, которые я получаю во внутреннем классе. Я использую 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[]
и вытащить из внутреннего класса !?
Странно, если я отправляю изображение и устанавливаю битмапимер внутри внутреннего класса, он работает. Но я хочу, чтобы убрать байтовый массив из внутреннего анонимного класса и сохранить его где-нибудь, чтобы потом работать над ним.
Когда вы говорите «внутренний класс», вы имеете в виду «анонимный класс» внутри метода «done»? – Andreas
@ Андреас да! :) –
Предположительно, 'tempFile.getDataInBackground' запустит поток и выполнит работу в фоновом режиме. Вы не увидите результат до «позже». Если вам нужен результат «сейчас», не делайте работу на фоне. – Andreas