代码之家  ›  专栏  ›  技术社区  ›  noob-Sci-Bot

GridView OnClick侦听器有时不工作

  •  1
  • noob-Sci-Bot  · 技术社区  · 9 年前

    我有一个奇怪的问题。我有一个包含9项(0-8)的gridView(可以多/少)。如下图所示,它显示了我设备屏幕上的前4项。

    image

    每当单击一个项目时,都会添加一个绿色的勾号。它几乎每次都能正常工作。但每当我向下滚动并快速单击时,第5个(第4项)项的click侦听器不会立即触发。这可能是一个小问题,但从用户的角度来看,有时可能有点烦人。请告诉我怎样才能做到完美?以下是我的customAdapter的代码:

     @Override
        public View getView(final int position, View convertView, final ViewGroup parent) {
    
            View rowView = convertView;
            Holder holder = null;
    
            if (rowView == null) {
                inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                rowView = inflater.inflate(R.layout.single_griditem_gitfamount, null);
                holder = new Holder();
                holder.textViewGiftAmount = (TextView) rowView.findViewById(R.id.textViewGridAmount);
                holder.imageViewGiftTick = (ImageView) rowView.findViewById(R.id.imageViewGridTick);
                holder.cardViewGridAmount = (CardView) rowView.findViewById(R.id.cardViewGridAmount);
                rowView.setTag(holder);
            } else {
                rowView = convertView;
                holder = (Holder) rowView.getTag();
            }
            holder.textViewGiftAmount.setText("Item " + position);
    
                if (position == clickedpos) {
                    holder.imageViewGiftTick.setVisibility(View.VISIBLE);
                }
                else{
                    holder.imageViewGiftTick.setVisibility(View.GONE);
                }
    
             //  final Holder h = holder;
               holder.cardViewGridAmount.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    clickedpos = position;
                    notifyDataSetChanged();
    
                }
            });
    
            return rowView;
        }
    
    1 回复  |  直到 9 年前
        1
  •  0
  •   Uma Achanta    9 年前

    如果您正在单击完整项目,则可以选择itemclicklistener

    gridview.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();
            }
        });
    

    推荐文章