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;
}
}
有谁知道什么是错?
谢谢。
indexOfChild始终与可见项目相关。你需要使用ListView的onClick事件 – ramaral
嗨,我该怎么做? – user1118764
这可能有所帮助:http://www.vogella.com/articles/AndroidListView/article.html – ramaral