java - 在 View 子类中实现监听器是否存在问题?

标签 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. 可以保存额外数据(userId)的 TextView
  2. 具有相同默认行为的 TextView 类
  3. 可以通过 ListAdapter 轻松创建和管理

我只是觉得我从未见过这样的做法,并且怀疑我遗漏了一些东西。

最佳答案

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

关于java - 在 View 子类中实现监听器是否存在问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10242887/

相关文章:

android - 为什么进度改变了不叫?

java - 将 jar 添加到 application.xml 中的应用程序?

java Netbeans Web 服务 WSDL 客户端

java - 将数据放入列表中,然后将其值插入数据库

android - 如何更新 LiveData 值?

android - 所有受支持的 Android View 的列表?

java - 如何保存 SQL 查询的结果集以便多次使用?

Android 图像裁剪 Uri 异常

android - 我们如何从 Google Play 购买已经拥有的商品?

android - 如何在此动画后休息/初始状态 View ?