如何简化 Android 图片的 switch-case?

How to simplify switch-case for Android images?

假设我在 Android 中有一个很长的 switch(case) 块,我在循环中定义我的图像:

    for(i=0;i<49;i++){
    switch(i)
    {

    case 0:
    imageFile.setBackgroundResource(R.drawable.img0);
    break;

    case 1:
    imageFile.setBackgroundResource(R.drawable.img1);
    break;

    (...)

    }}

是否有任何其他解决方法来简化它?

我想你可以把它放在 Array 中作为 class:

的静态字段
static int[] images = {R.drawable.img0,R.drawable.img1,R.drawable.img2...};

然后:

for(i=0;i<49;i++){
   imageFile.setBackgroundResource(images[i]);
 }

对我来说,hashmap 在你的情况下看起来更好。我认为。 在您的情况下,将第一项替换为编号,将第二项替换为资源。

HashMap map = new HashMap();
map.add( "cat", "Meow" );
map.add( "ape", "Squeak" );
map.add( "dog", "Woof" );
map.add( "bat", "Squeak" );
System.out.println( map );
System.out.println( "map.count( dog ) = " + map.count( "dog" ) );
HashMapIterator i = map.find( "dog" );
if ( i.equals( map.end() ) ) // A simpler way: if ( i.atEnd() ) ...
  System.out.println( "Could not find dog." );
else
  System.out.println( "Found " + i.get() );
System.out.println( "map.remove( dog ) = " + map.remove( "dog" ) );
HashMapIterator j = map.find( "dog" );
if ( j.atEnd() ) // A simpler way: if ( j.equals( map.end() ) ) ...
  System.out.println( "Could not find dog." );
else
  System.out.println( "Found " + j.get() );
}

如果您不想在 xml 或您的代码中定义数组,您可以使用类似这样的东西

Resources res = getResources();
//assuming all your images name start with img
for(int i=0;i<49;i++){
    int id = res.getIdentifier("img" + i, "drawable", getPackageName());
    imageFile.setBackgroundResource(id);
}

希望对您有所帮助

如果你真的想偷懒而不是初始化整个数组,这也可以

注:

use of this function is discouraged. It is much more efficient to retrieve resources by identifier than by name.

link

for(i=0;i<49;i++){
   getResources().getIdentifier("img"+Integer.toString(i), "drawable", getApplicationContext().getPackageName());
}}

我认为这是正确的方法:

private static final int[] IMAGES = new int[]{R.drawable.img0, R.drawable.img1, R.drawable.img2};

不要切换,而是这样做:

 for(i=0;i<49;i++){   
    imageFile.setBackgroundResource(IMAGES[i]);
  }