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;
}
S'il vous plaît mettre votre code. –
Publié le code. – AmeyaG
pourquoi vous écrivez le code de longclick dans l'adaptateur –