For-Each 循环:将布局转换为视图数组?
For-Each Loop: convert a layout into a View array?
如题所述,
假设 我有一个 layout
(如 Relativelayout
、LinearLayout
等),其中有很多 Views
.
这里的情况是我想使用 for-each
方法对所有这些人做同样的事情。
问题是,您只能 iterate
使用符合 array
的 for-each
方法。
P.S。我知道你可以这样做:
for(int i=0;i<layout.getChildCount();i++){
View v=layout.getChildAt(i);
v.doSomething(parameters);
}
- 我只需要知道是否有另一种使用
for-each
方法的方法,这样我就可以节省时间,而不是在我开发的每个应用程序上一次又一次地输入。
- 我仍然会接受答案,所以不要害羞!
为什么不创建一个像这样的辅助方法:
public final class ViewGroupHelper {
public static void forEach(@NonNull ViewGroup group,
@NonNull Action action) {
for (int i = 0; i < group.getChildCount(); i++) {
final View view = group.getChildAt(i);
action.apply(view);
}
}
public interface Action {
void apply(@NonNull View view);
}
private ViewGroupHelper() {}
}
...
ViewGroupHelper.forEach(layout, new ViewGroupHelper.Action() {
@Override
public void apply(@NonNull View view) {
view.doSomething();
}
});
或使用 lambda ViewGroupHelper.forEach(layout, view -> view.doSomething());
如题所述,
假设 我有一个 layout
(如 Relativelayout
、LinearLayout
等),其中有很多 Views
.
这里的情况是我想使用
for-each
方法对所有这些人做同样的事情。问题是,您只能
iterate
使用符合array
的for-each
方法。
P.S。我知道你可以这样做:
for(int i=0;i<layout.getChildCount();i++){
View v=layout.getChildAt(i);
v.doSomething(parameters);
}
- 我只需要知道是否有另一种使用
for-each
方法的方法,这样我就可以节省时间,而不是在我开发的每个应用程序上一次又一次地输入。
- 我仍然会接受答案,所以不要害羞!
为什么不创建一个像这样的辅助方法:
public final class ViewGroupHelper {
public static void forEach(@NonNull ViewGroup group,
@NonNull Action action) {
for (int i = 0; i < group.getChildCount(); i++) {
final View view = group.getChildAt(i);
action.apply(view);
}
}
public interface Action {
void apply(@NonNull View view);
}
private ViewGroupHelper() {}
}
...
ViewGroupHelper.forEach(layout, new ViewGroupHelper.Action() {
@Override
public void apply(@NonNull View view) {
view.doSomething();
}
});
或使用 lambda ViewGroupHelper.forEach(layout, view -> view.doSomething());