2011-05-20 65 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替換變量值。

相關問題