GridView没有第一次点击

时间:2013-12-28 11:16:29

标签: android gridview android-imageview onclicklistener

首先我要说的是,这个问题可能看起来像之前被问过,但我已经尝试过在此问题上提出的所有解决方案,这就是我提出这个问题的原因。

现在的问题是,我使用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);
        }

    }

2 个答案:

答案 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)。

  • 参数

    1. parent - 发生点击的AdapterView。

    2. 查看 - 已点击的AdapterView中的视图(这将是适配器提供的视图)

    3. 职位 - 视图在适配器中的位置。

    4. id - 点击的商品的行ID。