在android listview中获取Row位置

时间:2012-08-28 06:19:08

标签: android

嗨,这可能听起来像一个愚蠢的问题,但它几天让我感到不安,我还没有在互联网上找到答案。在没有覆盖onItemclick方法的android Listview中,还有其他方法可以获得行的位置。

1 个答案:

答案 0 :(得分: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);
    }
    ...
    ...
}