Fixed
Status Update
Comments
ki...@google.com <ki...@google.com>
ja...@google.com <ja...@google.com> #2
We actually had a suggestion for this a few weeks ago and I wrote both an ancestors
and descendants
extension property. This bug reminded me of it and I just submitted a CL for it today. And while I can't use your code directly, turns out I wrote the exact same implementation for parent traversal.
ma...@gmail.com <ma...@gmail.com> #3
👏
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 7423a649e9c1c9e5504b8bc8193dfcf98ad32c54
Author: Jake Wharton <jakew@google.com>
Date: Tue Apr 14 12:03:11 2020
Add ancestry sequences to ViewGroup
Bug: 117976097
Test: gw :core:core-ktx:conCh
Change-Id: I5f75cd25b3c46c99b21634d1f136788bd71ad890
M core/core-ktx/api/1.4.0-alpha01.txt
M core/core-ktx/api/current.txt
M core/core-ktx/api/public_plus_experimental_1.4.0-alpha01.txt
M core/core-ktx/api/public_plus_experimental_current.txt
M core/core-ktx/api/restricted_1.4.0-alpha01.txt
M core/core-ktx/api/restricted_current.txt
M core/core-ktx/src/androidTest/java/androidx/core/view/ViewGroupTest.kt
M core/core-ktx/src/androidTest/java/androidx/core/view/ViewTest.kt
M core/core-ktx/src/main/java/androidx/core/view/View.kt
M core/core-ktx/src/main/java/androidx/core/view/ViewGroup.kt
https://android-review.googlesource.com/1285823
Branch: androidx-master-dev
commit 7423a649e9c1c9e5504b8bc8193dfcf98ad32c54
Author: Jake Wharton <jakew@google.com>
Date: Tue Apr 14 12:03:11 2020
Add ancestry sequences to ViewGroup
Bug: 117976097
Test: gw :core:core-ktx:conCh
Change-Id: I5f75cd25b3c46c99b21634d1f136788bd71ad890
M core/core-ktx/api/1.4.0-alpha01.txt
M core/core-ktx/api/current.txt
M core/core-ktx/api/public_plus_experimental_1.4.0-alpha01.txt
M core/core-ktx/api/public_plus_experimental_current.txt
M core/core-ktx/api/restricted_1.4.0-alpha01.txt
M core/core-ktx/api/restricted_current.txt
M core/core-ktx/src/androidTest/java/androidx/core/view/ViewGroupTest.kt
M core/core-ktx/src/androidTest/java/androidx/core/view/ViewTest.kt
M core/core-ktx/src/main/java/androidx/core/view/View.kt
M core/core-ktx/src/main/java/androidx/core/view/ViewGroup.kt
Description
* Impl
* *********** */
/**
* Returns a [Sequence] walking up this view's [parent][View.getParent] hierarchy chain.
*/
val View.ancestors: Sequence<ViewParent>
get() = generateSequence(parent, ViewParent::getParent)
/* ***********
* Tests
* *********** */
@Test
fun ancestors_root() {
val actual = view.ancestors.toList()
val expected = emptyList<ViewParent>()
assertEquals(expected, actual)
}
@Test
fun ancestors() {
val parents = listOf(
FrameLayout(context),
LinearLayout(context),
RelativeLayout(context)
)
for ((parent, child) in parents.zipWithNext()) {
parent.addView(child)
}
parents.last().addView(view)
val expected = parents.reversed()
val actual = view.ancestors.toList()
assertEquals(expected, actual)
}