0

我有个问题。

在适配器的 getView 方法中没有调用图像视图的单击事件。我很困惑为什么会这样。对我来说,代码似乎没问题。

以下是我的代码:

//---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有一个相机的位图图像,然后是捕获图像的文件路径。

4

3 回答 3

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

            }
        }
    });
}
于 2013-09-02T05:45:30.620 回答
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)

于 2013-09-02T06:52:59.327 回答
0

您明确需要使图像视图可点击。imageView.setClickable(true);

或者,如果您想捕获行点击事件,则创建 OnItemClickListener 的子类并将其附加到 listview 但在这种情况下不要使 listview 项目可点击。

于 2013-09-02T05:20:35.063 回答