1
我需要子類化TextView讓它爲我保留一些額外的數據。我使用自定義ListAdapter將這些新的View對象放置到ListView中。在View子類中實現偵聽器有問題嗎?
我有一個動作,我想執行onClick()
,並且它是基於附加數據對ListView的所有元素的相同動作。
請問這個定義有什麼缺點或者會引起什麼問題嗎?
public class UserTextView extends TextView implements OnClickListener {
public int userId;
public UserTextView(Context context) {
super(context);
this.setClickable(true);
this.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
我希望,在我的onClick()
實現的代碼實際上不會被複制,但只存在於內存中一次,用的具體UserTextView
數據被調用。所以我不希望額外的內存使用。事實上,沒有額外的類和對象(匿名或不是)可能會提高性能(儘管不是真正有意義的方式)。
如果需要,可以調用setOnClickListener()
方法來更改偵聽器,如果我需要不同的特定對象的行爲。
它只是似乎很好地成爲我需要什麼:
- 一個TextView,可容納額外的數據(用戶ID)
- 一個TextView類,將具有相同的默認行爲
- 可以創建並通過ListAdapter輕鬆管理
我只是覺得我從來沒有見過這樣做過,並且懷疑有些事情我錯過了。
那麼取決於你的意思是「對於類的每個實例一次」這可能意味着每個實例的內存佔用必須包含'onClick()'代碼。但我的理解是,所有的方法都像靜態一樣(每個類一次),但是調用堆棧的作用是讓它知道**實例**它應該運行(因此'this') – Chris 2012-04-20 09:18:11
我也以同樣的方式理解它,抱歉我的錯誤解釋。每個實例只有變量,因爲它們有一個狀態。方法不(不應該)有一個狀態。因此,他們只加載一次到內存中。 – Paul 2012-04-20 09:58:55