首先我要说的是,这个问题可能看起来像之前被问过,但我已经尝试过在此问题上提出的所有解决方案,这就是我提出这个问题的原因。
现在的问题是,我使用Gridview来显示图像,我在Gridview的getview方法中设置了clicklistener,但是我无法点击第一张图片,所有其他图片都被点击了但是当我点击第一张图片时将其onclick事件图像未触发,当我点击其他图像或任何其他视图时触发它。 以前任何人都可以遇到这个问题,如果有任何线索,请帮助。这是我的代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(_activity);
} else {
imageView = (ImageView) convertView;
}
imageLoader.DisplayImage(_filePaths.get(position), imageView);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(imageWidth,
imageWidth));
// image view click listener
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) {
Log.i("Clicked on Image", "Yes");
Intent i = new Intent(_activity, Slideshow.class);
i.putExtra("position", _postion);
_activity.startActivity(i);
_activity.overridePendingTransition(R.anim.slide_top_in, R.anim.slide_top_out);
}
}
答案 0 :(得分:4)
尝试使用GridView.setOnItemClickListener()
而不是在单个图像上设置OnClickListener
。以下是方法的文档:http://developer.android.com/reference/android/widget/AdapterView.html#setOnItemClickListener(android.widget.AdapterView.OnItemClickListener)
答案 1 :(得分:2)
您呼叫错误点击监听器。 View OnClickListener仅适用于单一视图,而AdapterView OnItemClickListener适用于网格或列表。
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView <? > parent, View v, int position, long id) {
Toast.makeText(getApplicationContext(), ((TextView) v).getText(), Toast.LENGTH_SHORT).show();
}
});
单击此AdapterView中的项目时要调用的回调的接口定义。
public abstract void onItemClick (AdapterView<?> parent, View view, int position, long id)
单击此AdapterView中的项目时要调用的回调方法。
如果需要访问与所选项目关联的数据,实施者可以调用getItemAtPosition(position)。
参数
parent - 发生点击的AdapterView。
查看 - 已点击的AdapterView中的视图(这将是适配器提供的视图)
职位 - 视图在适配器中的位置。
id - 点击的商品的行ID。