2

ListView複数のオプションを持つアイテムを作成しようとしています。表示および編集します。Androidの連絡先システムとまったく同じ方法で作成したいと思います-以下を参照してください:

Android の連絡先アプリの同様の機能

必要な動作を示すために赤いボックスを追加しました。左の赤いボックス内を押すと、連絡先に電話します。右側の赤いボックス内を押すと、連絡先にテキスト メッセージが送信されます。同様のレイアウトを XML で既に作成しましたが、この機能をコードに実装するのに問題があります。

android:onClickアイテム内の個別のレイアウトに対してカスタム関数呼び出しを作成しようとしましたが、onClickメソッドを呼び出すとView、パラメーターとしてのみ渡すことができ、位置は渡すことができません。listview.getItemAtPosition関数を使用する位置が必要で、位置listview.getPositionForViewを戻すために使用しようとしましたが、これは非常に不安定であり、ビューのリサイクルのために誤った位置を戻すのが非常に簡単であることがわかりました。

各アイテムに複数のボタン/レイアウトを持つアイテムが入力されたリストを実装する最良の方法は何ですか?

4

2 に答える 2

0

android:onClick単一の関数を使用しながらこれを達成する 1 つの方法setTag()は、クリック可能なビューごとにメソッドを使用して、アイテムの位置である整数を格納することです。たとえば、アダプターのgetView():

@Override
public View getView(int position, View convertView, ViewGroup arg2) {
    ...
    ImageView textMessageView = (ImageView)convertView.findViewById(R.id.whatever);
    textMessageView.setTag(new Integer(position));
    ...
}

次に、onClick()メソッドで次のようなことができます。

@Override
public void onClick(View clickedView) {
    int position = clickedView.getTag() instanceof Integer ? ((Integer)clickedView.getTag()).intValue() : -1;
    ...
}

理想的かどうかはわかりませんが、XML 機能を使用でき、リスト ビュー アイテムごとにandroid:onClick個別のリスナーを作成する必要はありません。onClick

于 2013-09-23T14:06:32.467 に答える