Вот мой код:
final Foo myFoo = new Foo(new Inner() {
@Override
callback(){
myFoo.bar();
}
});
(С реальными именами функций)
final MyArrayAdapter aa = new MyArrayAdapter(new View.OnClickListener() {
@Override
onClick(){
aa.notifyDataSetChanged();
}
});
Java выдает мне ошибку о том, как myFoo может не были инициализированы. Есть ли способ исправить это? Я потенциально могу установить для обратного вызова значение null, когда я создаю объект, а затем изменяю его впоследствии, но я надеюсь, что будет более чистый способ. Любые идеи? (Также это не сработало бы, если бы Foo не был написан мной и не предоставлял интерфейс для изменения обратного вызова позже.)
Если кому-то интересно, в моем конкретном сценарии Foo является ArrayAdapter, а bar is notifyDataSetChanged(). То, что отображается адаптером, зависит от значений элементов в массиве, и эти значения изменяются при нажатии на них. Обратный вызов — это clickListener.