Java 如何向TextView动态添加Drawable
我有一个显示文本视图列表的列表视图。我用一个函数格式化上述文本视图Java 如何向TextView动态添加Drawable,java,android,listview,textview,drawable,Java,Android,Listview,Textview,Drawable,我有一个显示文本视图列表的列表视图。我用一个函数格式化上述文本视图 private 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);
private 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调用就可以格式化我的文本视图
有人能给我一个方法,让我用一个更简短/更优雅的方式来表达这个逻辑吗?任何帮助、评论、建议都将不胜感激
谢谢大家! 使用地图怎么样:
这是一个javascript线程,但我相信您会使用它-为您的绘图工具提供匹配文本的名称,就像苹果的.png一样 然后,使用下面的从名称获取其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 answers.:)也许你可以使用一个
HashMap
,将你的字符作为键,将可提取内容作为值,也许你可以重命名可提取内容,使其与文本同名。之后,您可以使用getResources().getIdentifier(tv.getText,“drawable”,getPackageName())获取他们的资源id代码>