我有一个列表视图,显示文本视图列表。我使用类似
的函数格式化所述textviewsprivate void myFunc(TextView tv){
if(tv.getText.toString().contains("A")){
tv.setDrawableLeft(R.id.apple);
}else if(tv.getText.toString().contains("A")){
tv.setDrawableLeft(R.id.apple);
}else if(tv.getText.toString().contains("B")){
tv.setDrawableLeft(R.id.ball);
}...
else if(tv.getText.toString().contains("Z")){
tv.setDrawableLeft(R.id.zebra);
}
现在这都是伪的,但它确实有效。我已经实现了它。但是,我现在的问题是能够以这样的方式编写它,以便我可以通过一百万个if-else调用来格式化我的文本视图。
有人可以建议一种方式让我以更短/更优雅的方式制作这种逻辑吗?任何帮助,评论,建议将不胜感激。
谢谢!
答案 0 :(得分:1)
为您的drawables提供您匹配的文本的名称,如A.png for apple。
然后,使用以下内容从名称中获取其ID
public int getID(String drawableName){
Resources resources = context.getResources();
final int resourceId = resources.getIdentifier(drawableName, "drawable",
context.getPackageName());
return resources.getDrawable(resourceId);
}
简单地做,
tv.setDrawableLeft(getID(tv.getText.toString()));
希望这会有所帮助。 (我也喜欢@ 0xDEADC0DE答案。:))
答案 1 :(得分:0)