TextViewをサブクラス化して、私のためにいくつかの追加データを保持する必要があります。これらの新しいViewオブジェクトをカスタムListAdapterを使用して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(USERID)と同じデフォルトの動作
- を作成することができますがあります
- AのTextViewクラスListAdapterによって簡単に管理されています
私はこれをこのように見たことがないと感じています。
「クラスの各インスタンスに対して一度」という意味には、各インスタンスのメモリフットプリントに 'onClick()'コードが含まれている必要があります。しかし、私の理解では、すべてのメソッドは静的(クラスごとに1回)のように保持されていますが、呼び出しスタックは**インスタンス**を認識させるように働きます(これは 'this') – Chris
同じように理解してください、私の悪い説明には申し訳ありません。変数は状態を持つため、インスタンスごとにしかありません。メソッドは状態を持つべきではありません。そのため、それらは一度だけメモリにロードされます。 – Paul