2016-11-10 44 views
1

我有一个网格视图显示多达5个图像的片段。 OnClickListener不会针对网格中的第一张图片被触发,但当点击网格中的其他图片时,它会起作用。当点击网格中的第一张图片时,Android OnClickListener不会被触发

public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { 
     imageView = new ImageView(_activity); 
    } else { 
     imageView = (ImageView) convertView; 
    } 

    String imageURLs = _filePaths.get(position).toString(); 
    Picasso.with(this._activity).load(imageURLs).placeholder(R.mipmap.ic_launcher).into(imageView); 

    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    imageView.setLayoutParams(new GridView.LayoutParams(imageWidth, 
      imageWidth)); 

    imageView.setOnClickListener(new OnImageClickListener(position)); 

    return imageView; 
} 

class OnImageClickListener implements OnClickListener { 

    int _postion; 

    // constructor 
    public OnImageClickListener(int position) { 
     this._postion = position; 
    } 

    @Override 
    public void onClick(View v) { 
     Intent i = new Intent(_activity, FullScreenViewActivity.class); 
     i.putExtra("position", _postion); 
     i.putExtra("PATHS", _filePaths); 
     _activity.startActivity(i); 
    } 

} 

回答

0

你应该在getView()方法设定的位置作为ImageView的标签,并在onClick()方法得到它的标签(位置)试试这个。

public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { 
     imageView = new ImageView(_activity); 
    } else { 
     imageView = (ImageView) convertView; 
    } 

    String imageURLs = _filePaths.get(position).toString(); 
    Picasso.with(this._activity).load(imageURLs).placeholder(R.mipmap.ic_launcher).into(imageView); 

    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    imageView.setLayoutParams(new GridView.LayoutParams(imageWidth, 
      imageWidth)); 

    imageView.setTag(position); 
    imageView.setOnClickListener(this); 

    return imageView; 
} 

    @Override 
public void onClick(View v) { 
    Intent i = new Intent(_activity, FullScreenViewActivity.class); 
    i.putExtra("position", v.getTag()+""); 
    i.putExtra("PATHS", _filePaths); 
    _activity.startActivity(i); 
    } 

} 

而且不要忘了执行View.OnClickListener

+0

问题是,当点击网格中的第一张图片时,onClick甚至不会被触发。 – dacscan3669

0

这件事是通过直接连接到OnItemClick GridView控件,而不是ImageView的解决。

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Intent i = new Intent(view.getContext(), FullScreenViewActivity.class); 
      i.putExtra("position", position); 
      i.putExtra("PATHS", imagePaths); 
      view.getContext().startActivity(i); 
     } 
    }); 
相关问题