如何将资源ID传递到自定义视图并指出要使用哪个子视图?

问题描述 投票:0回答:1

我有一个用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)的颜色,而不是传递方法调用中固定的颜色

java android android-layout android-view
1个回答
0
投票

如果您希望允许呼叫者配置单个子代,建议为每个子代公开单个方法:

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)

这些缺点是没有编译时知道传入位置有效的方法。

© www.soinside.com 2019 - 2024. All rights reserved.