如何动态地将drawable添加到TextView

时间:2014-03-27 14:41:46

标签: java android listview textview drawable

我有一个列表视图,显示文本视图列表。我使用类似

的函数格式化所述textviews
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调用来格式化我的文本视图。

有人可以建议一种方式让我以更短/更优雅的方式制作这种逻辑吗?任何帮助,评论,建议将不胜感激。

谢谢!

2 个答案:

答案 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)

你如何使用地图:

Here's a thread that you might find useful

这是一个javascript线程,但我相信你会使用它 -