1

我試圖改變(onClick)在我的GridView中ImageView的背景,但是當我點擊它時,選定的行和另一個隨機的一個響應點擊。以下是我的代碼:Android:多個GridView行響應項目點擊

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    final ViewHolder holder; 
    final int index = position; 

    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.item_grid_galeria_modelo, parent, false); 

     holder = new ViewHolder(); 
     holder.imageView = (ImageView) convertView.findViewById(R.id.image); 
     holder.favoriteStar = (ImageView) convertView.findViewById(R.id.img_fav_star); 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    holder.favoriteStar.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!holder.isFavorited) { 
       holder.isFavorited = true; 
       holder.favoriteStar.setImageResource(R.drawable.ic_star); 
      } else { 
       holder.isFavorited = false; 
       holder.favoriteStar.setImageResource(R.drawable.ic_star_grey); 
      } 
     } 
    }); 

任何幫助表示讚賞。謝謝! :]

回答

1

一種方法是設置一個唯一的ID在Java或XML的ImageView的(一個或多個),其中可能是這樣的:

的Java(正在使用的同一代碼重複創建多個視圖:

ViewHolder vh; 
ImageView iv; 
View vi; 
int location = 0; 

vi = view; 
vh = new ViewHolder(); 

// Use to get the current ImageView being worked on. 
vh.iv = (ImageView) vi.findViewById(R.id.image); 

// Use to set new id for the ImageView currently being worked on. 
vh.iv.setId(location++); 

XML(XML格式佈局多個視圖):

<!-- Copy and paste and new name for each and every view needed --> 
android:id="@+id/id_name_here" 

現在因爲 ID我現在獨特的聽衆可以選擇正確的視角。

例:

public void clickListener(View view) { 
final int id = view.getId(); 

// Can now get the unique id of the exact ImageView that was clicked 
ImageView iv = (ImageView) findViewById(id); 

// Will now set new image for and only for the correct ImageView that was clicked. 
iv.setImageResource(R.drawable.ic_star); 
} 

有可能是需要的,以及可能如所創建的視圖的方式與其它代碼修改或補充。但是,一個獨特的ID確保每個視圖都是獨立的,因此您只能設置或獲取正確的視圖,而不能獲取其他視圖。

+0

謝謝,男人!真的有用的提示 – Dico 2014-09-28 23:46:54

相關問題