Java 如何将资源id传递给自定义视图并指示使用它的子视图?

Java 如何将资源id传递给自定义视图并指示使用它的子视图?,java,android,android-layout,android-view,Java,Android,Android Layout,Android View,我有一个用Java实现的自定义视图,它是一个具有4个子视图的垂直布局。 我希望能够通过自定义视图中的方法传递每个子视图的配置。 假设我只想为每个视图传递一个不同的颜色id,例如,对于儿童1使用R.color.white,对于儿童2使用R.color.red等 如何将此信息传递到自定义视图?以下将起作用: public void configure(int color1, int color2, int color3, int color4) 但问题是,我更喜欢方法调用方指示哪个颜色是哪个子级的

我有一个用Java实现的自定义视图,它是一个具有4个子视图的垂直布局。
我希望能够通过自定义视图中的方法传递每个子视图的配置。
假设我只想为每个视图传递一个不同的颜色id,例如,对于儿童1使用
R.color.white
,对于儿童2使用
R.color.red

如何将此信息传递到自定义视图?以下将起作用:

public void configure(int color1, int color2, int color3, int color4)

但问题是,我更喜欢方法调用方指示哪个颜色是哪个子级的颜色(1,2,3,4),而不是传递方法调用中固定的颜色。如果希望允许调用方配置单个子级,我建议为每个子级公开单个方法:

public void configureChild1(int color)
public void configureChild2(int color)
...
如果只需要一个“动态”方法,则必须接受像从位置到颜色的
映射,或位置和颜色的vararg
对:

public void configure(Map<Integer, Integer> positionsToColors)
public void configure(Pair<Integer, Integer> ... positionAndColors)
public void配置(映射位置颜色)
公共无效配置(配对…位置和颜色)

这样做的缺点是编译时无法知道传入的位置是否有效。

一个
int[]
颜色数组?您可以这样做<代码>配置(0xFF000,-1,0x00FFFF)
以设置子级1和3,而不是2。您可能会检测到存在
-1
。我关心的是函数调用方必须假设存在子函数1、2等。我想知道是否有其他方法来描述这一点