在View子类中实现侦听器有问题吗?

时间:2012-04-20 08:39:32

标签: java android android-view onclicklistener

我需要继承TextView,让它为我保留一些额外的数据。我正在使用自定义ListAdapter将这些新的View对象放入ListView。

我有一个我想要执行的动作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()方法来更改监听器,如果我需要特定对象的不同行为。

它似乎恰好符合我的需要:

  1. 可以容纳额外数据的TextView(userId)
  2. 具有相同默认行为的TextView类
  3. 可以通过ListAdapter轻松创建和管理
  4. 我只是觉得我从来没有见过这样做过,并且怀疑我有什么遗失。

1 个答案:

答案 0 :(得分:0)

据我所知,对于每个类的实例,所有非静态的内存都在内存中。这意味着通过这种设计,您的代码既美观又干净,但外观和内存使用并没有什么区别。