【问题标题】:OnItemSelectedListener is fired when onLongClick is pressed in gridview在 gridview 中按下 onLongClick 时会触发 OnItemSelectedListener
【发布时间】:2016-04-20 05:20:26
【问题描述】:

我会尽量说清楚。 我有一个显示图像的 Gridview。用户可以在 OnLongClick 中选择多个图像。 onLongClick 在适配器中。该代码还有一个 onItemSelectedListener,它在特定位置缩放选定的图像。 问题是在任何位置点击 gridview 后都不会触发 onItemSelectedListener。当使用 onLongClick 时,它会同时触发 OnItemSelectedListener 和 onLongClickListener 方法。我尝试使用之前提供的解决方案,即在 onLongClickListener 中返回 true,但这也不起作用。我被困在这里。帮助将不胜感激。 提前谢谢你。

    gvImages.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            PhotoBeans bean = (PhotoBeans) parent.getItemAtPosition(position);
            j = position;
            photoUrl = bean.getThumbImageUrl();
            Log.e("photoUrl", "" + photoUrl);
            zoomImageFromThumb(view, photoUrl);
        }
    });

//适配器

     public class ImageAdapter extends BaseAdapter {
    private LayoutInflater mInflater;
    private ArrayList<PhotoBeans> arrayListPhoto;


    public ImageAdapter(ArrayList<PhotoBeans> arrayListPhoto) {
        this.arrayListPhoto = arrayListPhoto;
        mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return arrayListPhoto.size();
    }

    @Override
    public Object getItem(int position) {
        return arrayListPhoto.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
          public View getView(final int position, View convertView, ViewGroup parent) {
        View rootView = convertView;
        final ViewHolder holder;

        if (convertView == null) {

            holder = new ViewHolder();

            rootView = mInflater.inflate(R.layout.custom_gallery_item, null);

            holder.imgThumb = (ImageView) rootView.findViewById(R.id.imgThumb);
            holder.chkImage = (ImageView) rootView.findViewById(R.id.chkImage);
            rootView.setTag(holder);
        } else {
            holder = (ViewHolder) rootView.getTag();

        }

        if (arrayListPhoto.get(position).isImageSelected()) {
            holder.chkImage.setVisibility(View.VISIBLE);
            holder.imgThumb.setAlpha(0.5f);
        } else {
            holder.chkImage.setVisibility(View.GONE);
            holder.imgThumb.setAlpha(1f);
        }


        holder.imgThumb.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                if (arrayListPhoto.get(position).isImageSelected()) {
                    holder.chkImage.setVisibility(View.GONE);
                    holder.imgThumb.setAlpha(1f);
                    arrayListPhoto.get(position).setIsImageSelected(false);
                } else {
                    holder.chkImage.setVisibility(View.VISIBLE);
                    holder.imgThumb.setAlpha(0.5f);
                    arrayListPhoto.get(position).setIsImageSelected(true);
                }
                notifyDataSetChanged();

                return true;
            }
        });



        Picasso.with(Photos.this)
                .load(new File(arrayListPhoto.get(position).getThumbImageUrl()))
                .resize(150, 150)
                .centerCrop()
                .into(holder.imgThumb);

        return rootView;
    }
}

class ViewHolder {
    ImageView imgThumb;
    ImageView chkImage;
    int id;
}

【问题讨论】:

  • 请输入您的代码。
  • 为什么要在适配器中编写longclick的代码
  • 能否请您举例说明我应该如何更改代码?
  • 查看已发布的答案 medam?
  • 嗯...好吧,亲爱的,你错了听众。你必须 onItemLongClickListner 对

标签: android gridview onitemclicklistener onlongclicklistener


【解决方案1】:

像这样在你的活动中添加代码

   gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {***your code here**
                return false;
            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2017-11-22
    • 2018-06-11
    • 2014-04-21
    • 1970-01-01
    相关资源
    最近更新 更多