2017-07-28 3 views
0


J'ai un GridView avec des photos.
Afficher l'image en plein écran depuis gridView

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_me, container, false); 
     TextView t = (TextView) view.findViewById(R.id.textName); 
     name = MySharedPreferences.getInstance(getActivity()).getName(); 
     t.setText(name); 
     gridView = (GridView) view.findViewById(R.id.gridPhoto); 
     img = new ImageAdapter(getActivity(), path); 
     gridView.setAdapter(img); 
     gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       //code 
      } 
     }); 
     requestPath(); 
     return view; 
    } 

Dans requestPath() redéfinissent le ImageAdapter avec l'URL des images.
Dans onItemClick Je voudrais obtenir l'image dans la grille
Ceci est ImageAdapter

public class ImageAdapter extends BaseAdapter { 
    private Context context; 
    private final LayoutInflater inflater; 
    private List<PathImage> path; 
    private String username = null; 


    public ImageAdapter(Context c, List<PathImage> path){ 
     context = c; 
     this.path = path; 
     inflater = LayoutInflater.from(context); 
    } 


    public ImageAdapter(Context c, List<PathImage> path, String username){ 
     context = c; 
     this.path = path; 
     inflater = LayoutInflater.from(context); 
     this.username = username; 
    } 

    @Override 
    public int getCount() { 
     return path.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return path.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 

     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     ImageView imageView; 

     if (v == null) { 
      v = inflater.inflate(R.layout.gridview_item, parent, false); 
      v.setTag(R.id.picture, v.findViewById(R.id.picture)); 
     } 
     imageView = (ImageView) v.getTag(R.id.picture); 
     String url = ""; 
     if(username == null) { 
      url = "http://example.com/image/" + MySharedPreferences.getInstance(context).getUsername() + "/"; 
     }else{ 
      url = "http://example.com/image/" + username + "/"; 
     } 
     Glide.with(context).load(url + path.get(position).getPath()).into(imageView); 
     return v; 
    } 

    public void updatePath(List<PathImage> p){ 
     path = p; 
     this.notifyDataSetChanged(); 
    } 

} 

Je voudrais afficher les images dans un autre fragment lorsque je clique sur gridview.
Comment déplacer une image d'un fragment à un autre?

+0

Cochez cette case [answer] (https://stackoverflow.com/a/12739968/5343320). – huk

+0

Comment obtenir l'image lorsque je clique sur une image? – Ibernato933

+0

Vous n'avez pas besoin de l'imageview. Vous pouvez obtenir l'emplacement en cliquant sur imageview de la méthode getvView. Implémentez onclicklistner à imageview dans votre getview. Cela vous donnera la position et par la position, vous pouvez obtenir le get la valeur comme: url + path.get (position) .getPath() et ensuite le passer à votre fragment et appliquer la même logique pour charger l'image que vous avez utilisé dans getview en utilisant le glissement. – huk

Répondre

0

dans ImageAdapter, implment un rappel custome comme ci-dessous:

private ImageViewClickListener mImageViewClickListener; 

public interface ImageViewClickListener { 
    void onImageClicked(int position); 
} 

public void setImageViewClickListener (ViewClickListener viewClickListener) { 
    mImageViewClickListener = viewClickListener; 
} 

Maintenant, dans votre activité, mettre en œuvre l'interface ImageViewClickListener et appelez imageAdapter.setImageViewClickListener (ce) et mettre en œuvre sous le code dans GetView:

imageView.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     mImageViewClickListener.onImageClicked(position); 
    } 
}); 
+0

Ok, mais en activité comment puis-je obtenir le chemin de l'image à travers la position? J'ai seulement les chemins dans l'imageAdapter – Ibernato933

+0

quand vous passez l'arraylist à l'adapteur, faites sa portée à global et accédez au chemin using la position. – huk

+0

Ok, merci man =) – Ibernato933