我有7个ImageView,每个开关都有7个不同的情况,它们具有为所有7个ImageView设置图像的相同行为。有什么办法可以缩短代码,现在我必须在每个ImageView的开关盒中分别按其名称来调用每个ImageView,这会使代码变得冗长而业余。就像下面的开关代码一样,所有图像视图都以其图像视图名称被调用。
ImageView1 = (ImageView) v.findViewById(R.id.ImageView1);
ImageView2 = (ImageView) v.findViewById(R.id.ImageView2);
ImageView3 = (ImageView) v.findViewById(R.id.ImageView3);
ImageView4 = (ImageView) v.findViewById(R.id.ImageView4);
ImageView5 = (ImageView) v.findViewById(R.id.ImageView5);
ImageView6 = (ImageView) v.findViewById(R.id.ImageView6);
ImageView7 = (ImageView) v.findViewById(R.id.ImageView7);
switch(x){
case1:
ImageView1.setImageDrawable(getResources().getDrawable(R.drawable.Image1));
break;
case2:
ImageView1.setImageDrawable(getResources().getDrawable(R.drawable.Image2));
break;
case3:
ImageView1.setImageDrawable(getResources().getDrawable(R.drawable.Image3));
break;
case4:
ImageView1.setImageDrawable(getResources().getDrawable(R.drawable.Image4));
break;
case5:
ImageView1.setImageDrawable(getResources().getDrawable(R.drawable.Image5));
break;
case6:
ImageView1.setImageDrawable(getResources().getDrawable(R.drawable.Image6));
break;
case7:
ImageView1.setImageDrawable(getResources().getDrawable(R.drawable.Image7));
break;
}
答案 0 :(得分:1)
在这种情况下,您可以创建一个 ImageView数组,并使用可绘制对象的 id 创建另一个。像这样:
int[] idOfDrawables= {R.drawable.image1, R.drawable.image2,...,R.drawable.image7};
ImageView[] bundleImageView= {ImageView1, ImageView2, ...,ImageView7};
之后,您可以创建一个将在其中发生逻辑的方法,如下所示:
public void setImageToImageView(ImageView[] bundleImageView, int[] idOfDrawables)
{
for (int i=0; i< bundleImageView.length; i++)
{
bundleImageView[i].setImageResource(idOfDrawables[i]);
}
}
答案 1 :(得分:1)
按照其他人的建议,创建两个数组:
int[] ids = {R.drawable.Image1, R.drawable.Image2,...,R.drawable.Image7};
ImageView[] imageViews = {ImageView1, ImageView2, ...,ImageView7};
然后使用它:
private void showImage(int x, ImageView iv) {
iv.setImageDrawable(getResources().getDrawable(ids[x - 1]));
}
如果您要为ImageView3
放置图片,请致电showImage(x, ImageView3)
还是要显示所有图像:
for (int i = 0; i < imageViews.length; i++) {
showImage(x, imageViews[i])
}
答案 2 :(得分:0)
将所有图像以及imageViews以彼此对应的方式放入两个单独的数组中,然后使用for循环遍历它。
findViewById...
int[] imageIds = {R.drawable.image1, R.drawable.image2,...,R.drawable.image7};
ImageView[] imageViews = {image1, image2, ...,image7};
for (int i = 0; i < imageViews.length; i++) {
imageViews[i].setImageResource(imageIds[i]);
}
答案 3 :(得分:0)