ImageView:通过通用代码更改图像视图集src

时间:2017-04-03 12:48:35

标签: android

我有26个图像视图集和26个图像集(命名为... z),我试图通过通用代码逐个为每个图像视图设置一个随机图像。 获得运行时错误。

public class MainActivity extends AppCompatActivity {
int i = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);        
    initialMethod(); 
    //this method loads the random images to imageview one by one
}   

 public void initialMethod() {

  String temp;
  TextView mytextView;
  int randList[] ={26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
  ImageView myImageView;       
  int ImageViewIdList[] = {R.id.imageA1, R.id.imageA2, R.id.imageA3, R.id.imageA4, R.id.imageA5, R.id.imageA6, R.id.imageA6, R.id.imageA8, R.id.imageA9, R.id.imageA10, R.id.imageA11, R.id.imageA12, R.id.imageA13, R.id.imageA14, R.id.imageA15, R.id.imageA16, R.id.imageA17, R.id.imageA18, R.id.imageA19, R.id.imageA20, R.id.imageA21, R.id.imageA22, R.id.imageA23, R.id.imageA24, R.id.imageA25, R.id.imageA26};

    for (i = 0; i < 26; i++) {

        myImageView= (ImageView)findViewById(ImageViewIdList[i]);
        String ImageName = String.valueOf((char) (randList[i] + 97));            
        int id = getResources().getIdentifier(ImageName, "id", getPackageName());
        myImageView.setImageResource(id);           
    }

4 个答案:

答案 0 :(得分:0)

您输错的一个逗号是&#39;在17到16之间

更改:

int randList[] ={26,25,24,23,22,21,20,19,18,17'16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};

为:

int randList[] ={26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};

答案 1 :(得分:0)

首先 - 始终发布您的错误。您正在尝试将ID加载为图像资源。相反,将您的可绘制ID放在randList中。

还要考虑在代码中动态创建所有这些ImageView,以及其他正确的编码实践(例如代码中没有硬编码值等等,但我敢打赌这是为了学校练习)

int randList[] = { R.drawable.image1, R.drawable.image2, ... }
imageView.setImageDrawable(randList[...]);

答案 2 :(得分:0)

试试这个......

    int randList[] ={26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
    ImageView myImageView;
    int ImageViewIdList[] = {R.id.imageA1, R.id.imageA2, R.id.imageA3, R.id.imageA4, R.id.imageA5, R.id.imageA6, R.id.imageA6, R.id.imageA8, R.id.imageA9, R.id.imageA10, R.id.imageA11, R.id.imageA12, R.id.imageA13, R.id.imageA14, R.id.imageA15, R.id.imageA16, R.id.imageA17, R.id.imageA18, R.id.imageA19, R.id.imageA20, R.id.imageA21, R.id.imageA22, R.id.imageA23, R.id.imageA24, R.id.imageA25, R.id.imageA26};

    for (int i = 0; i < 26; i++) {
        myImageView= (ImageView)findViewById(ImageViewIdList[i]);
        String ImageName = String.valueOf((char) (randList[i] + 97));            
        int id = getResources().getIdentifier(ImageName, "id", getPackageName());
    }

答案 3 :(得分:0)

正如“etan”所说 我已经改变了代码 int id = getResources()。getIdentifier(randList [i],“id”,getPackageName());

int id = getResources()。getIdentifier(randList [i],“drawable”,getPackageName());

非常感谢etan! :)