2017-07-20 3 views
1

Ich habe ein seltsames Problem. Ich habe eine GridView mit 9 Items (0-8) (kann mehr/weniger sein). Wie das untere Bild zeigt, zeigt es die ersten 4 Elemente auf dem Bildschirm meines Geräts.GridView OnClick Listener funktioniert manchmal nicht

image

Ein grünes Häkchen hinzugefügt wird, wenn ein Element geklickt wird. Es funktioniert fast immer. Aber wenn ich nach unten scrolle und schnell klicke, wird der Click-Listener des 5. Elements (Item 4) nicht sofort ausgelöst. Es kann ein kleines Problem sein, aber für die Perspektive des Benutzers, manchmal kann es ein wenig ärgerlich sein. Bitte sag mir, wie kann ich es makellos machen? Hier ist der Code meiner 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; 
    } 
+0

Warum gehst du nicht für Recyclerview. Es funktioniert besser als das. –

+0

Wie kann ich 2 Einträge in jeder Zeile wie gridView in recyclerView anzeigen? –

+0

können Sie gridlayoutmanager verwenden –

Antwort

0

Wenn Sie auf vollständige Artikel sind klicken, dann können Sie wählen 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(); 
     } 
    }); 

und Sie können auch verwenden recyclerview.