0

gedrückt wird Ich werde versuchen, so klar wie möglich zu sein. Ich habe eine Gridview, die Bilder anzeigt. Der Benutzer kann mehrere Bilder in OnLongClick auswählen. Das onLongClick befindet sich in dem Adapter. Der Code verfügt außerdem über einen OnItemSelectedListener, der das ausgewählte Bild an der bestimmten Position zoomt. Das Problem ist onItemSelectedListener wird nicht ausgelöst, nach dem Tippen auf Gridview an einer beliebigen Position. Und wenn das onLongClick verwendet wird, löst es sowohl die OnItemSelectedListener- als auch die onLongClickListener-Methode aus. Ich habe versucht, die zuvor bereitgestellten Lösungen zu verwenden, die in onLongClickListener true zurückgegeben wurde, aber das hat auch nicht funktioniert. Ich stecke hier fest. Hilfe wäre willkommen. Vielen Dank im Voraus.OnItemSelectedListener wird ausgelöst, wenn onLongClick in der 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); 
     } 
    }); 

// Adapter

 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

Bitte Code setzen. –

+0

Hat den Code veröffentlicht. – AmeyaG

+0

warum schreibe Code von longclick in Adapter –

Antwort

0

Put-Code in dieser auf Ihre Aktivitäten wie diese

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