2011-05-20 24 views
1

我正在使用带有ImageAdapter的网格视图来显示图像。 我有两套图像是mThumbIds包含原始图像和cThumbIds包含选定的图像。如果点击新图像,将原先选择的图像替换为原始图像

现在,当我点击图像,我改变了正常的图像与选定的图像。代码如下:

final ImageView iv = (ImageView)v.findViewById(R.id.icon_image); 
      iv.setOnClickListener(new OnClickListener(){ 

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        //iv.setColorFilter(Color.LTGRAY); 
        iv.setImageResource(cThumbIds[position]); 
        //iv.bringToFront(); 

        index= position; 

       } 

      }); 

      iv.setImageResource(mThumbIds[position]); 

但是,当我点击另一个图像时,其他图像也显示为选定的问题出现。正确的方法是将新图像显示为选定的图像,并将旧图像移除为选定图像。换句话说,较旧的图像应该恢复为原始图像。

请帮我在这

感谢,

潘卡

回答

1

我假设您在this tutorial中使用ImageAdapter类的修改副本,并且您发布的代码位于该类的getView(int,View,ViewGroup)方法中。

保存所选图像的索引,但不保存视图本身。您需要保存这既是为了恢复旧的图像,像这样:

private int selectedPosition = -1; 
private ImageView selectedView = null; 
... 
public View getView(int position, View convertView, ViewGroup parent) { 
    // I don't understand what this line is about?? 
    ImageView iv = (ImageView) v.findViewById(R.id.icon_image); 
    // Why not something like this?? 
    // ImageView iv = new ImageView(mContext); 

    iv.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // Set the selected image for the ImageView just pressed. 
      iv.setImageResource(cThumbIds[position]); 

      // Revert to the original image for the ImageView previously 
      // pressed. 
      if (selectedPosition != -1) { 
       selectedView.setImageResource(mThumbIds[selectedPosition]); 
      } 

      // Save the position and ImageView just pressed so it can be 
      // reverted next time an ImageView is pressed 
      selectedPosition = position; 
      selectedView = (ImageView) view; 
     } 
    }); 

    iv.setImageResource(mThumbIds[position]); 
    return (iv); 
} 

我对线ImageView iv = (ImageView) v.findViewById(R.id.icon_image);虽然(我提到我的代码示例)有点糊涂了。

+0

嗨加里感谢回复使用上面的代码是产生两个错误:1)方法setImageResource(Integer)是未定义的类型视图(在selectedView.setImageResource)2)视图无法解析为变量(在selectedView =视图) – 2011-05-27 06:06:12

+0

第一个错误是因为'selectedView'只是一个'View'而不是'ImageView',我已经在代码中纠正了这个错误(查看我的编辑历史记录以确切地看到需要更改的内容)。如果您完全复制此代码,则不应发生第二个错误。 'view'是'onClick'方法中的参数。 – 2011-05-27 06:19:32

+0

我根据您的建议开始工作 – 2011-05-27 10:00:37

3

您需要创建一个变量,并保持点击图片的ID在。当用户点击其他图像时,首先根据变量中的id重置另一个图像,然后用当前点击的图像的id替换变量值。