Android SwipeListView检测按钮按下backView

时间:2014-10-01 14:06:12

标签: android

您好我有一个SwipeListView,它有一个包含两个按钮的backview。我遇到的问题是视图是在我的listAdapter中创建的,所以如果我在按钮上放置一个onClickListener,它只会获得数组中最后一个项目。所以我要做的是检测后视图中按下了哪个按钮以及阵列中的哪个位置。有谁知道如何做到这一点?

继承我的布局项xml,它有前后视图,你可以看到后视图包含两个按钮

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
        >

   <RelativeLayout
            android:id="@+id/back"
            android:tag="back"
            android:background="@color/grey"
            android:layout_width="match_parent"
            android:layout_height="80dp"
            >

        <Button
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:id="@+id/delete_button"
            android:text="delete"
            android:background="@drawable/pink_sel"
            android:layout_alignParentRight="true"
            android:textColor="@color/white"
            android:drawableTop="@drawable/ic_delete"
            android:padding="12dp"
            android:textSize="12sp"
            android:gravity="center"
       />

          <Button
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:id="@+id/mark_as_read"
            android:text="mark as read"
            android:background="@drawable/pink_sel_rev"
            android:layout_toLeftOf="@+id/delete_button"
            android:textColor="@color/white"    
            android:drawableTop="@drawable/ic_read"
            android:paddingTop="10dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:textSize="12sp"
            android:gravity="center"


                /> 


    </RelativeLayout>

    <RelativeLayout 
    android:layout_width="fill_parent"
    android:layout_height="80dp"
    android:background="@drawable/listitem"
    android:id="@+id/front"
     >


    <ImageView
        android:id="@+id/read"
        android:layout_width="5dp"
        android:layout_height="80dp"
        android:layout_alignParentLeft="true"
        android:background="@color/pink"
     />

      <TextView
        android:id="@+id/msg_date"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/msg_title"
        android:layout_marginRight="20dp"
        android:layout_alignParentRight="true"
        android:ellipsize="end"
        android:lines="1"
        android:textColor="@color/darkgrey"
        android:textSize="12sp" 
        android:paddingTop="10dp"
        android:gravity="right"/>

    <TextView
        android:id="@+id/msg_title"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/read"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/read"
        android:ellipsize="end"
        android:lines="1"
        android:textColor="@color/darkgrey"
        android:textSize="20sp" 
        android:paddingTop="10dp"/>

    <TextView
        android:id="@+id/msg_subtitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/msg_title"
        android:layout_alignLeft="@+id/msg_title"
        android:textSize="14sp"
        android:textColor="@color/darkgrey"
        android:lines="2" 
        android:ellipsize="end"
        android:paddingBottom="10dp" />

</RelativeLayout>

</FrameLayout>

在我的适配器中,我为视图设置了一个单击侦听器

markAsRead.setOnClickListener(new View.OnClickListener() { 
             public void onClick(View arg0) {
                 Log.v("LOG","Array position = " + position);
})};

我遇到的问题是虽然它确实检测到点击位置始终是数组中的最后一项,所以如果我的数组中有5个项目,无论我点击哪个位置总是4,我需要它能够获得我点击的项目的位置,以便我可以检索和编辑该位置的数据

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用setTag?

即,在适配器问题的getView中

markAsRead.setTag(TheObjectYouWantToEdit) 

然后在onClick侦听器

TheObjectYouWantToEdit edit = arg0.getTag()