我有一个用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)
...
如果只想使用一种“动态”方法,则必须从位置到颜色接受诸如Map
之类的东西,或者从位置和颜色接受vararg Pair
:
public void configure(Map<Integer, Integer> positionsToColors)
public void configure(Pair<Integer, Integer> ... positionAndColors)
这些缺点是没有编译时知道传入位置有效的方法。