2013-10-14 89 views
0

我的设备上有一个大于1页的自定义列表。我的列表具有包含单选按钮的自定义列表项XML。我希望在选择单选按钮时获取列表项目的索引。我已经实现了onClickRadioButton(),但是我得到的索引是不正确的,因为它总是被引用到屏幕上的任何东西,也就是说,如果向下滚动以使列表项#5位于屏幕的顶部,随后的列表项#5的指数为0。获取视图/视图组的索引

我的目录XML如下:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/topMsg" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="Status" /> 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="match_parent" 
     android:choiceMode="singleChoice" 
     android:longClickable="true" > 
    </ListView> 
    <Button 
     android:id="@+id/myButton" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_height="wrap_content" 
     android:text="@string/str_mybutton" /> 
</LinearLayout> 

我个人列表项XML如下。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
    <TextView 
     android:id="@+id/listName" 
     android:layout_width="wrap_content" /> 
     android:layout_height="wrap_content" 
    <TextView 
     android:id="@+id/listDescription" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/listName" 
     android:maxLines="4" /> 
    <RadioButton 
     android:id="@+id/radioBut" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/listDescription" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_gravity="center_vertical" 
     android:onClick="onClickRadioButton" 
     android:text="" /> 
</RelativeLayout> 

我onClickRadioButton()如下:

public void onClickRadioButton(View v) { 
    View vMain = ((View)v.getParent()); 
    if (radioBut != null) { 
    radioBut.setChecked(false); 
    } 
    radioBut = (RadioButton)v; 
    if (radioBut.isChecked()) { 
    listIndex = ((ViewGroup) vMain.getParent()).indexOfChild(vMain); 
    } else { 
    radioBut = null; 
    listIndex = -1; 
    } 
} 

有谁知道什么是错?

谢谢。

+0

indexOfChild始终与可见项目相关。你需要使用ListView的onClick事件 – ramaral

+0

嗨,我该怎么做? – user1118764

+0

这可能有所帮助:http://www.vogella.com/articles/AndroidListView/article.html – ramaral

回答

0

试试这个在您的onclickRadioButton

final int position = getListView().getPositionForView(v); 
    if (position != ListView.INVALID_POSITION) { 
     showMessage(getString(R.string.you_want_to_buy_format, CHEESES[position])); 
    } 

欲了解更多信息,请访问this并检查了“获得一个ListView的视图的位置”一节。