如何获取上一个或下一个视图

时间:2012-11-02 11:59:33

标签: android view find next

如何获取SlideButton视图的上一个视图(TextView),以及SlideButton视图的下一个视图。

带有ID“remotelight”的SlideButton视图。我可以使用方法“findViewById”获取SlideButton视图。 所以在我获得SlideButton视图后,如何在没有“findViewById”方法帮助的情况下获取上一个视图和下一个视图。

非常感谢。

下面的

是布局xml的一部分:

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />

    <com.ivn.SlideButton
        android:id="@+id/remotelight"
        android:layout_width="100dp"
        android:layout_height="50dp" />


    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="" />

</TableRow>

3 个答案:

答案 0 :(得分:13)

您可以使用充当小部件容器的ViewGroup实例来执行此操作。

getChildAt(int)indexOfChild(View)

因此getChildAt(indexOfChild(v)+1)会为您提供下一个视图。

类似

 ViewGroup container = (ViewGroup) findViewbyID(R.tableRow1);
 View slideBtn = findViewbyID(R.remoteLight);
 View nextView = container.getChildAt(container.indexOfChild(slideBtn)+1);

您应该添加溢出检查,并且下一个视图属于您实际需要的类型。

答案 1 :(得分:0)

我创建了两个使用@CjS解决方案的函数:

/**
 * @param view
 */
public static View prev(View view) {

    ViewGroup container = (ViewGroup) view.getParent();

    int indexOfChild = container.indexOfChild(view);

    if ((indexOfChild - 1) >= 0) {

        return container.getChildAt(indexOfChild - 1);

    }

    return null;

}

/**
 * @param view
 */
public static View next(View view) {

    ViewGroup container = (ViewGroup) view.getParent();

    int indexOfChild = container.indexOfChild(view);

    if (container.getChildCount() > (indexOfChild + 1)) {

        return container.getChildAt(indexOfChild + 1);

    }

    return null;

}

答案 2 :(得分:0)

我已经在Kotlin Extension中创建了一个等效项:

def xmla: Action[AnyContent] = Action({ implicit r: Request[AnyContent] => {
  val validXmlBOM: Option[NodeSeq] = r.body.asText
    .map(_.replace("", ""))
    .map(scala.xml.XML.loadString)
  Ok(validXmlBOM.get.toString())
}})