我有一个问题。
不会在适配器的getView方法中调用图像视图的click事件。我很困惑,为什么会这样。我的代码似乎没问题。
以下是我的代码:
//---returns an ImageView view---
public View getView(int position, View convertView, ViewGroup parent)
{
ImageView imageView = null;
if (convertView == null) {
imageView = new ImageView(act);
imageView.setLayoutParams(new GridView.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
imageView.setTag(position);
} else {
imageView = (ImageView) convertView;
}
if((Integer)imageView.getTag() == 0) {
imageView.setLayoutParams(new GridView.LayoutParams(200, 200));
imageView.setPadding(10, 5, 10, 5);
Bitmap bitmap = ThumbnailUtils.extractThumbnail(imgPic.get(position).getBitmap(), 200, 200);
imageView.setImageBitmap(bitmap);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
}
imageView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//TODO Auto-generated method stub
if((Integer)v.getTag() != 0) {
//opens the image to view.
//Intent
}
}
});
}
注意:我有一个网格视图。网格视图中的第一项是始终存在的摄像机图像。单击此按钮将打开相机。捕获图像后,它们应与此摄像机图像对齐。
因此,arraylist有一个相机的位图图像,然后是捕获图像的文件路径。
答案 0 :(得分:1)
这样做
public View getView(int position, View convertView, ViewGroup parent)
{
ImageView imageView = null;
if ((convertView == null) || (convertView.getTag() == null)) {
imageView = new ImageView(act);
imageView.setLayoutParams(new GridView.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
imageView.setTag(position);
} else {
imageView = (ImageView) convertView.getTag();
}
convertView.setTag(imageView);
imageView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//TODO Auto-generated method stub
if((Integer)v.getTag() != 0) {
//opens the image to view.
//Intent
}
}
});
}
答案 1 :(得分:0)
您明确需要使图像视图可点击。 imageView.setClickable(真);
或者如果要捕获行单击事件,则创建OnItemClickListener的子类并将其附加到listview,但在这种情况下不要使listview项可单击。
答案 2 :(得分:0)
这似乎是一个非常奇怪的问题。但我用另一种方法解决了这个问题。
所以对于那些面临这个奇怪问题的人来说,
一种替代方法可以是实现onItemClickListener。
grid.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapter_view, View view, int position,
long id)
{
if(position == 0)
{
//your code
}
}
});
如果在getView方法中创建的imageview是setOnFocusable(false)