Внутренний класс — адаптер, внутренний-внутренний класс — прослушиватель. Как получить доступ к (закрытым)элементам/методам адаптера из Listener?
list.setAdapter(new Adapter() {
public View getView() {
//...
button.setListener(new Listener() {
public void onClick() {
Adapter.this.remove(item);
}
);
}
});
Обычно для доступа к членам внешнего класса вы просто говорите Outer.this.member, но в этом случае это выдавало следующую ошибку (использование фактического класса):
error: not an enclosing class: ArrayAdapter
Итак, как вы должны получить доступ к внутреннему классу члены внутреннего-внутреннего класса? Мне не нравятся много-уровневые вложенные анонимные классы, но в данном случае я изучаю новый API и пока не уверен в более чистом способе. У меня уже есть обходной путь, но я все равно хотел узнать. remove()на самом деле не скрыт внутренним-внутренним классом, поэтому в данном случае указывать класс на самом деле не нужно, но хотелось, чтобы в коде было ясно, где именно находится этот метод remove(). Я также хотел знать, если он скрыт. Я считаю, что использование Outer.$6.remove()
будет работать, но я не думаю, что так должно быть.