如何获取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>
答案 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())
}})