Внутренний класс - это Adapter, внутренний-внутренний класс - 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()
будет работать, но я не думаю, что так и должно быть.