Вот мой код:
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, а панель — notifyDataSetChanged(). То, что отображается адаптером, зависит от значений элементов в массиве, и эти значения изменяются при щелчке по ним. Обратный вызов — это clickListener.