【问题标题】:Getting the index of a view/viewgroup获取视图/视图组的索引
【发布时间】:2013-10-14 09:29:00
【问题描述】:

我的设备上有一个大于 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;
  }
}

有谁知道怎么回事?

谢谢。

【问题讨论】:

标签: android xml listview radio-button viewgroup


【解决方案1】:

在您的onclickRadioButton 上试试这个,

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

有关更多信息,请访问this 并查看“获取列表视图中视图的位置”部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    相关资源
    最近更新 更多