Java 在视图子类中实现侦听器是否存在问题?

Java 在视图子类中实现侦听器是否存在问题?,java,android,android-view,onclicklistener,Java,Android,Android View,Onclicklistener,我需要子类TextView,让它为我保存一些额外的数据。我正在使用自定义ListAdapter将这些新视图对象放置到ListView中 我有一个操作要在onClick上执行,基于附加数据,它对ListView的所有元素都是相同的操作 这一定义会有任何负面影响或引起任何问题吗 我希望onClick实现中的代码实际上不会被复制,而是只在内存中存在一次,并使用特定的UserTextView数据调用。所以我不期望额外的内存使用。事实上,没有一个额外的类和对象匿名或不匿名可能会提高性能,尽管这不是一种真正

我需要子类TextView,让它为我保存一些额外的数据。我正在使用自定义ListAdapter将这些新视图对象放置到ListView中

我有一个操作要在onClick上执行,基于附加数据,它对ListView的所有元素都是相同的操作

这一定义会有任何负面影响或引起任何问题吗

我希望onClick实现中的代码实际上不会被复制,而是只在内存中存在一次,并使用特定的UserTextView数据调用。所以我不期望额外的内存使用。事实上,没有一个额外的类和对象匿名或不匿名可能会提高性能,尽管这不是一种真正的、有意义的方式

如果需要,可以调用setOnClickListener方法来更改侦听器(如果我需要特定对象的不同行为)

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

可以保存额外数据userId的TextView 具有相同默认行为的TextView类 可以通过ListAdapter轻松创建和管理
我只是觉得我从未见过这样做,并且怀疑我遗漏了什么。

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

好吧,根据您对类的每个实例的一次表示,这可能意味着每个实例的内存占用必须包括onClick代码。但我的理解是,所有方法都是静态的,每个类一次,但调用堆栈的工作原理是让它知道它应该运行的实例,因此我也以同样的方式理解它,很抱歉我的错误解释。每个实例只有一个变量,因为它们有一个状态。方法不应具有状态。因此,它们只被加载到内存中一次。
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

    }

}