1

こんにちは、これはばかげた質問のように聞こえるかもしれませんが、数日間私を悩ませていて、インターネットで答えを見つけられませんでした. onItemclick メソッドをオーバーライドせずに Android Listview で、行の位置を取得できる他の方法があります。

4

1 に答える 1

1

アイテムの位置を取得するために setTag()/getTag() メソッドを使用します。リストアダプタの getView() メソッドで、 setTag("position")メソッドを使用して、項目の位置を行項目 (この場合はボタン) のタグとして設定します。
任意の行のボタンがクリックされると、そのボタンに対して onClick() メソッドが呼び出され、onClick() メソッドでgetTag()メソッドを使用して位置を取得できます。すべての行ボタンに対して onClick ルーチンと同じメソッドを使用します。

サンプル コード: リスト アイテムは次のようになります

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<Button
    android:id="@+id/button1"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="117dp"
    android:background="@drawable/grad"
    android:onClick="onButtonClick" />

getView() メソッドは次のようになります。

public View getView (int position, View convertView, ViewGroup parent) {
    ...
    ...
    button.setTag(position);
    ...
}

onClick ルーチンは次のようになります。

public void onButtonClick(View v) {
    String tag = v.getTag().toString();
    if(tag != null) {
         int position = Integer.parseInt(tag);
    }
    ...
    ...
}
于 2012-08-28T08:58:18.510 に答える