0

Je vais essayer d'être aussi clair que possible. J'ai un Gridview qui affiche des images. L'utilisateur peut sélectionner plusieurs images dans OnLongClick. Le onLongClick est dans l'adaptateur. Le code a également un onItemSelectedListener, qui zoome l'image sélectionnée à la position particulière. Le problème est onItemSelectedListener n'est pas déclenché après avoir appuyé sur gridview à n'importe quelle position. Et lorsque onLongClick est utilisé, il déclenche la méthode i.e OnItemSelectedListener et la méthode onLongClickListener. J'ai essayé d'utiliser des solutions fournies plus tôt, ce qui revenait à true dans onLongClickListener, mais cela ne fonctionnait pas non plus. Je suis coincé ici. L'aide serait appréciée. Merci d'avance.OnItemSelectedListener est activé lorsque onLongClick est enfoncé dans gridview

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); 
     } 
    }); 

// Adaptateur

 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; 
} 
+1

S'il vous plaît mettre votre code. –

+0

Publié le code. – AmeyaG

+0

pourquoi vous écrivez le code de longclick dans l'adaptateur –

Répondre

0

code mis en cela sur votre activité comme celui-ci

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