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

相关问题