Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android Studio] Images & HorizontalView

Afficher des images sélectionnées de la Gallery dans un HorizontalView

    19 juillet 2019 à 11:03:45

    Bonjour,

    J'essais de mettre en place un HorizontalView dans lequel je voudrais afficher automatiquement les unes à la suite des autres, les photos que je selectionne ( par un bouton dédié ) dans la Gallery.

    J'arrive bien à afficher une photo que je sélectionne, pas de soucis, par contre quand je selectionne plusieurs photos il n'y en a qu'une qui apparait.

    Je ne vois pas comment je pourrais faire, sachant que je ne veux pas utiliser de GridView je voudrai impérativement que les photos s'affichent sur une ligne horizontalement.

    Voici mon code XML :

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
        <TextView
            android:layout_gravity="center"
            android:textSize="20dp"
            android:layout_marginTop="40dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TEST PHOTO 2"/>
    
        <HorizontalScrollView
            android:id="@+id/monhorizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp">
    
            <LinearLayout
                android:id="@+id/monlinear"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal">
    
                <include layout="@layout/gv_item"></include>
    
            </LinearLayout>
    
        </HorizontalScrollView>
    
        <Button
            android:id="@+id/monbouton"
            android:layout_gravity="center"
            android:layout_marginTop="40dp"
            android:text="Ajoutez des photos"
            android:textAllCaps="false"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
    </LinearLayout>

    et voici mon code JAVA :

    public class MainActivity extends AppCompatActivity {
    
        @BindView(R.id.monhorizontal) HorizontalScrollView monhorizontal;
        @BindView(R.id.monlinear) LinearLayout monlinear;
        @BindView(R.id.monbouton) Button monbouton;
        @BindView(R.id.ivGallery) ImageView iv;
        @BindView(R.id.ivTitle)EditText ivTitle;
    
        static final int GALLERY = 1;
        String imageEncoded;
        List<String> imageencodedList;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            ButterKnife.bind(this);
    
            monbouton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    monhorizontal.setVisibility(View.VISIBLE);
                    Intent fromgallery = new Intent(Intent.ACTION_PICK, Media.EXTERNAL_CONTENT_URI);
                    fromgallery.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
                    startActivityForResult(fromgallery, GALLERY);
                }
            });
        }
    
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == GALLERY && resultCode == RESULT_OK) {
    
                if (data != null) {
                    Uri contentURI = data.getData();
                    try {
                        Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), contentURI);
                        iv.setImageBitmap(bitmap);
    
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    

    Si quelqu'un peut m'aider ca serait super sachant que je debute en Android et qu'il ne me manque plus que ce problème là pour realiser le petit projet que j'essayes de monter.
    En vous remerciant d'avance pour votre aide.



    • Partager sur Facebook
    • Partager sur Twitter
      19 juillet 2019 à 16:20:43

      Saut,

      Tu devrais utiliser une RecyclerView. Le LinearLayoutManager permet d'afficher les éléments de manière horizontale.

      • Partager sur Facebook
      • Partager sur Twitter
        19 juillet 2019 à 16:33:18

        Bonjour,

        Mon problème est que justement je n'arrives pas à recupérer plusieurs images. Une seule je peux le faire, par contre, plusieurs je n'y arrive pas.

        T'aurais une solution  du coup stp ?

        • Partager sur Facebook
        • Partager sur Twitter
          19 juillet 2019 à 23:57:07

          As-tu essayé la solution proposée ici : https://stackoverflow.com/a/19848052
          • Partager sur Facebook
          • Partager sur Twitter
            22 juillet 2019 à 9:00:36

            rolandl a écrit:

            As-tu essayé la solution proposée ici : https://stackoverflow.com/a/19848052


            Bonjour,

            C'est pas ça le problème, c'est de pouvoir les afficher dans le HorizontalScrollView en fait. Je sais les passer en intent c'est juste que dans le onactivityresult j'arrive bien à en faire afficher 1 mais pas plusieurs ( cf. mon code ci-dessus) du coup meme si je peux en sélectionner plusieurs via mon intent( pas de soucis ) l'affichage ne se fait pas correctement.

            Sachant que le but est de les afficher & scroller horizontalement et PAS dans une GridView

            -
            Edité par Olvire 22 juillet 2019 à 9:02:00

            • Partager sur Facebook
            • Partager sur Twitter
              22 juillet 2019 à 9:04:53

              Dans un cas tu dis que tu n'arrives pas à récupérer plusieurs images et dans l'autre que tu les récupères et que c'est juste l'affichage qui pose soucis.

              Du coup j'ai déjà répondu dans mon premier message. Une scrollview n'est pas adaptée pour afficher des listes. Utilises une RecyclerView.

              • Partager sur Facebook
              • Partager sur Twitter
                22 juillet 2019 à 9:08:35

                Très utile comme message..........

                Donc si quelqu'un a une réponse cela serait sympa, si vous savez, de me filer un coup de main.

                Merci :)

                • Partager sur Facebook
                • Partager sur Twitter
                  22 juillet 2019 à 11:15:24

                  Le but n'est pas de faire à ta place mais bien de te donner des pistes pour le faire.

                  Suite à mon message, as-tu essayé de mettre en place une RecyclerView plutôt qu'une HorizontalScrollView ? Si oui, quelle est le résultat ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 juillet 2019 à 12:14:54

                    rolandl a écrit:

                    Le but n'est pas de faire à ta place mais bien de te donner des pistes pour le faire.


                    Aussi utile que répondre à quelqu'un qui ne sait pas changer une roue " Change de voiture " oui le résultat sera que l'on ne sait toujours pas changer une roue.... Donc si tu ne souhaites pas aider, je te remercie de ne pas continuer à répondre, merci.

                    Donc si quelqu'un avait une solution cela serait super cool, merci beaucoup.

                    -
                    Edité par Olvire 22 juillet 2019 à 13:15:28

                    • Partager sur Facebook
                    • Partager sur Twitter

                    [Android Studio] Images & HorizontalView

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown