【问题标题】:Accessing array of imageviews with for loop使用 for 循环访问图像视图数组
【发布时间】:2012-02-14 07:51:56
【问题描述】:

我正在开发一个应用程序,它在 3x3 矩阵中具有 9 个图像视图。 如果用户单击它们,我想更改它们的图像。 所以 tat 需要在点击监听器上链接 9 个 id 和 9 个集合

是否可以使用这样的 for 循环访问它们

public int[] imv= {R.id.im0, R.id.im1, R.id.im2, R.id.im3,R.id.im4, R.id.im5, R.id.im6, R.id.im7,R.id.im8};//Loading ids into array imv
for(int i=0;i<imv.length;i++)
        {
            ImageView im[i] = (ImageView) findViewById(imv[i]);//Attaching ids
        }
for(int i=0;i<imv.length;i++)
        {
            im[i].setOnClickListener
        }

im[i] 出现错误。但是,如果我删除我,我会得到一个对象 im,它是图像视图的集合。如何访问单个图像视图并设置 onclicklisteners?

【问题讨论】:

  • 你做得很好。什么是错误。你有没有初始化 ImageView im[] = new ImageView[imv.length]
  • 嗨,我在没有 i 的情况下初始化了 im 并得到了对象。但问题是我无法访问单个图像视图。我想知道在 9 中单击了哪个图块并根据位置更改图块图像。我只能得到 im.setonclicklistener。如何访问其中的 imageivews?

标签: android android-layout android-intent android-emulator android-widget


【解决方案1】:

我觉得 GridView 参考这个例子会更好

http://developer.android.com/resources/tutorials/views/hello-gridview.html

您可以使用 imageView.setOnClickListener 在 getView 方法中编写您的逻辑

【讨论】:

    【解决方案2】:

    //im[i]的作用域会在第一个for循环结束

    for(int i=0;i<imv.length;i++)
            {
                ImageView im[i] = (ImageView) findViewById(imv[i]);//Attaching ids
    im[i].setOnClickListener(this);
    
            }
    

    【讨论】:

      【解决方案3】:

      我认为问题在于“im”是在 for 循环内声明的(使其仅在 for 循环中本地)。在循环外声明“im”,然后在里面定义它。

      尝试:

      ImageView im[] = new ImageView im[imv.length];
      for(int i=0;i<imv.length;i++)
             {
                 im[i] = (ImageView) findViewById(imv[i]);//Attaching ids
             }
      

      注意:我忘记了如何正确声明一个数组。只需在其他地方确认.. :D

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-15
        • 2012-07-22
        • 2019-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-10
        相关资源
        最近更新 更多