內部類是Adapter,內部類是Listener。如何從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()
會起作用,但我不認爲它應該是這樣。
我明白了。我認爲會有一種語言語法來使用,以便獲得我不知道的Adapter。順便說一句''必須是最終的。 – Chloe 2012-04-01 00:03:49
我更喜歡這種方法,因爲它易於閱讀和明確。 – skrat 2012-04-01 00:09:47
我在Adapter上得到一個編譯錯誤:Adapter.this; (適配器不是封閉類)。相反,你應該說最終的適配器=這個..如果有的話.. – sethu 2013-01-09 13:08:44