2012-04-23 10 views
1

私はリストビューを実装しましたが(各アイテムはバトムです)、今ではViewHolderを使用して効率を改善したいと考えています。ここで私の問題ですが、私はこれらのボタンのOnClickメソッドをどこでオーバーライドする必要があるかわかりません。ViewHolderの実装と使用

これは私のArrayAdapterのgetViewメソッドです:

public View getView(final int position, View convertView, ViewGroup parent) { 
    ViewHolder view; 
    if(convertView==null) 
    { 
     view = new ViewHolder(); 
     LayoutInflater inflator = activity.getLayoutInflater(); 
     convertView = inflator.inflate(R.layout.layout_opcion, null); 
     view.b_opcion = (Button) convertView.findViewById(R.id.boton_opcion); 
     **view.b_opcion.setOnClickListener(new View.OnClickListener() {...});** 
     convertView.setTag(view); 
    } 
    else 
    { 
     view = (ViewHolder) convertView.getTag(); 
    } 
    **view.b_opcion.setOnClickListener(new View.OnClickListener() {...});** 
    view.b_opcion.setText(getItem(position)); 
    return convertView; 
} 

}

これのOnClickメソッドは、選択した項目についていくつかの情報を表示するので、ここで私の質問である必要があります。 (一度だけそれをするために)(convertView == NULL){} HERE

場合 は私が

内のこのメソッドをオーバーライドすることはできますか? それに対して、このIF内部には、レイアウトを膨張させることを指すコード行だけが必要ですか?

答えて

0

リスナー等を設定しますあなたが使用しているif(直前または直後view.b_opcion.setText(...

私はOnClickListenerを実装するリスナークラスを定義し、同じ単一インスタンスを最初のifステートメント内のすべてのビューにアタッチします。

onlickリスナーでは、表示するオブジェクトを表示するためにgetTagを呼び出すことができますそして、あなたのid/positionをビューアから取得してください。その後、オブジェクトにアクセスして、あなたが持っているデータ(ビュー、アダプタアイテムなど)に必要な操作を実行できます。

0

if文の後にしたいです。 ifステートメントの内部では、ビューのUI要素への参照のみが取得されます。あなたが変更を加えることができるif文の後に、私は(例えば、IDや位置のような)

セットの外にこの情報を行のいくつかの識別を定義ビューホルダーでパラメータを置く

関連する問題