Два двойных вложенных анонимных внутренних класса. Как получить анонимных членов класса 1-го уровня?

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

10
задан Chloe 31 March 2012 в 23:51
поделиться