0

があるとしListViewます。それListViewはアイテムを持っています。そのアイテムにはサブアイテム (ボタンなど) があります。

この目的のためにアダプターのサブクラスを使用するためgetView()Adaptor. そのサブアイテムのクリック イベントをアクティビティの何らかのメソッドで受け取りたいと考えていますListView。私の問題がよく説明されていることを願っています。

最適なアプローチはどれですか?

4

1 に答える 1

4

最適なアプローチはどれですか?

最善のアプローチはないと思います。必要なものを実装する簡単でクリーンな方法の 1 つは、サブ項目イベントの汎用リスナーを実装し、それらをインターフェイス (によって実装Activity) を介して渡すことです。

public interface OnButtonEventListener {

    void onSubButtonClicked(int parentRowPosition);
}

あなたのアクティビティは、このインターフェースを実装します。

次に、アダプターで汎用リスナーを作成します。

private OnButtonEventListener mBtnListener; // as you'll pass a Context to your adapter, the Activity which implements the OnButtonEventListener
private void OnClickListener mListener = new OnClickListener() {

      @Override
      public void onClick(View v) {
          Integer rowPosition = (Integer)  v.getTag();// you could pass other data as well
          mBtnListener.onButtonClicked(rowPosition);
      }

}

次に、アダプターの getView メソッドで:

//...
Button b = ...find the Button
b.setTag(Integer.valueOf(position));
b.setOnClickListener(mListener);
//

このアプローチを使用すると、後で行うことにした場合に、イベント ブロードキャストを他のサブ項目のアクティビティに簡単に追加できます。

于 2013-07-24T12:17:14.247 に答える