myq_26 2012-10-11 03:38 采纳率: 16.7%
浏览 5510
已采纳

在ImageView中让图像随机出现

在imageview中有9个图像视图。我想让这几个图像在imageview中随机显示。我想实现点击刷新按钮,图像就会随机分配。但是每次点击后总是在俩个或三个imageview中重复出现相同的图片。程序中哪里有问题呢?

final int[] imageViews = {
            R.id.imgview11, R.id.imgview12, R.id.imgview13, 
            R.id.imgview21, R.id.imgview22, R.id.imgview23, 
            R.id.imgview31, R.id.imgview32, R.id.imgview33  };

    final int[] images = {
            R.drawable.i1, R.drawable.i2, R.drawable.i3, 
            R.drawable.i4, R.drawable.i5, R.drawable.i6, 
            R.drawable.i7, R.drawable.i8, R.drawable.empty };

    final ImageButton shuffle = (ImageButton) findViewById(R.id.new_puzzle); 
    shuffle.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {        
            Random generator = new Random();
            //int n = 9;
            //n = generator.nextInt(n);
            //Random random = new Random(System.currentTimeMillis());
            for(int v : imageViews) {
                ImageView iv = (ImageView)findViewById(v);
                iv.setImageResource(images[generator.nextInt(images.length - 1)]);
            }
        }
    }); 
  • 写回答

2条回答

  • hxn_217 2012-10-11 05:31
    关注

    用这段代码,容易实现。

    shuffle.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) { 
    
                Random rng = new Random(); 
                List<Integer> generated = new ArrayList<Integer>();
                for (int i = 0; i < 9; i++)
                {
                  while(true)
                  {
                     Integer next = rng.nextInt(9) ;
                     if (!generated.contains(next))
                     {
                        generated.add(next);
                        ImageView iv = (ImageView)findViewById(imageViews[i]);
                        iv.setImageResource(images[next]);
                        break;
                     }
                   }
                }
                }
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?