Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向TextView动态添加Drawable_Java_Android_Listview_Textview_Drawable - Fatal编程技术网

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