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