Partage
  • Partager sur Facebook
  • Partager sur Twitter

Android studio redirection RSS feed vers ListView

Sujet résolu
    10 juin 2019 à 19:26:16

    Bonjour,

    Je dois réaliser un projet ayant pour but d'afficher dans le MainActivity une ListView, dans cette ListView il y a les éléments d'un lien rss en .xml. J'arrive à obtenir les Items du lien dans ma ListView sauf que maintenant je voudrais que l'utilisateur puisse mettre le lien de son choix dans un EditText dans une nouvelle activité. Dans cette nouvelle activité (que j'ai appelé SettingsActivity), il y a donc un EditText avec un bouton "Appliquer". Je voudrai que lorsque l'utilisateur appuie sur le bouton appliquer, le contenu du lien qu'il a au préalable taper dans le EditText se retrouve dans ma ListView dans mon MainActivity. Ça fait pas mal de temps que je bloque dessus et je ne comprends pas comment je peux résoudre ce problème. :(

    Voici ci-joint des extraits de mon code : 

    package com.example.myapplication;
    
    //Import
    
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.ListView;
    import java.util.List;
    
    
    
    
    public class MainActivity extends SettingsActivity {
    
        public EditText EditText;
        public AlertDialog alertDialog;
    
        @Override
        protected void onCreate(Bundle savedInstanceState)  {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //Intent intent = getIntent();
            //if (intent != null) {
            //    String str = "";
            //    if (intent.hasExtra("edittext")) {
            //        str = intent.getStringExtra("edittext");
            //   }
            //    new LoaderTask().execute(str);
    
            String url = ""; //lien de l'utilisateur
            //String url = EditText.getText().toString(); // string du editText envoyé dans le thread loaderTask
            // on lance le loadertask avec comme lien le string EditText
            new LoaderTask().execute(url);
    
            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem Item) {
                    if (Item.getItemId() == R.id.settings) {
                        //lancer l'activité settings
                        Intent intent = new Intent(getApplicationContext(), SettingsActivity.class);
                        startActivity(intent);
                        return true;
                    }
                    return false;
                }
    
            });
    
            FloatingActionButton fab = findViewById(R.id.bouton);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Snackbar.make(v, "Loading news", Snackbar.LENGTH_LONG).setAction("Action", null).show();
                }
            });
    
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
            if (id == R.id.settings) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
    
    
        }
    
        public class LoaderTask extends AsyncTask<String, String, List<Rssitem>> {
            //private  String PeopleURLexec;
    
           // @Override
           // protected void onPreExecute() {
           //     PeopleURLexec = PeopleURL.getText().toString();
           // }
    
            @Override
            protected List<Rssitem> doInBackground(String... url) {
                List<Rssitem> news = RssLoader.parse(url[0]);
                return news;
            }
    
            @Override
            protected void onPostExecute(List<Rssitem> news) {
                super.onPostExecute(news);
                ListView list = findViewById(R.id.listView);
                RssAdapter adapter = new RssAdapter(getApplicationContext(), news);
                list.setAdapter(adapter);
    
            }
        }
    
    }
    

    SettingsActivity

    package com.example.myapplication;
    
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.support.annotation.Nullable;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    
    public class SettingsActivity extends AppCompatActivity {
    
        public Button Apply;
        public EditText EditText;
        private String PeopleExecUrl;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            setContentView(R.layout.activity_settings2);
            super.onCreate(savedInstanceState);
            Apply = (Button) this.findViewById(R.id.FeedButton);
            EditText = (EditText) this.findViewById(R.id.rssFeedEditText);
            PeopleExecUrl = EditText.getText().toString();
            Apply.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //AsyncTask newTask = new MainActivity3.LoaderTask().execute(PeopleExecUrl); // lancement de LoaderTask lorsque l'on appuie sur le bouton appliquer
    
                    startActivity(new Intent(SettingsActivity.this, MainActivity.class));
                }
            });
    
            //class url extends MainActivity {
            //    @Override
            //    protected void onCreate(Bundle savedInstanceState) {
            //        setContentView(R.layout.activity_settings2);
            //        super.onCreate(savedInstanceState);
    
            //        Apply = (Button) this.findViewById(R.id.FeedButton);
            //        EditText = (EditText) this.findViewById(R.id.rssFeedEditText);
            //        PeopleExecUrl = EditText.getText().toString();
            //        Apply.setOnClickListener(new View.OnClickListener() {
            //            @Override
            //            public void onClick(View view) {
            //                //AsyncTask newTask = new MainActivity.LoaderTask().execute(PeopleExecUrl); // lancement de LoaderTask lorsque l'on appuie sur le bouton appliquer
            //                startActivity(new Intent(SettingsActivity.this, MainActivity.class));
            //            }
            //        });
            //    }
            //}
    
    
        }
    
    
    
    
    
       //@Override
       //protected void onCreate(Bundle savedInstanceState)  {
       //    super.onCreate(savedInstanceState);
       //    setContentView(R.layout.activity_settings2);
    
       //    Apply = (Button) this.findViewById(R.id.FeedButton);
    
       //    Apply.setOnClickListener(new View.OnClickListener() {
       //        @Override
       //        public void onClick(View view) {
       //            new MainActivity.LoaderTask().execute();
       //        }
       //    });
    
       //}
    }

    content_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 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"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:context=".MainActivity"
        tools:showIn="@layout/activity_main">
    
        <TextView
            android:id="@+id/textView_title"
            android:layout_width="64dp"
            android:layout_height="43dp"
            android:text="Titre"
            android:textSize="25dp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <TextView
            android:id="@+id/textView_subtitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Sous-titre"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.1"
            android:textSize="25dp" />
    
        <ListView
            android:id="@+id/listView"
            android:layout_width="309dp"
            android:layout_height="327dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.5" />
    
    
    </android.support.constraint.ConstraintLayout>

    content_settings.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 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"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:context=".MainActivity"
        tools:showIn="@layout/activity_settings2">
    
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.5"
    
            />
    
    </android.support.constraint.ConstraintLayout>

    activity_settings2.xml 

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 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"
        tools:context=".SettingsActivity">
    
        <Button
            android:id="@+id/FeedButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Appliquer"
            android:textColor="@color/colorWhite"
            android:textColorHighlight="@color/colorPrimaryDark"
            android:shadowColor="@color/colorPrimaryDark"
            android:background="@color/colorGrey"
            android:textSize="15dp"
            android:textAlignment="center"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.5"
            />
    
        <EditText
            android:id="@+id/rssFeedEditText"
            android:layout_width="342dp"
            android:layout_height="52dp"
            android:background="@color/colorGrey"
            android:hint="https://..."
            android:textAlignment="center"
            android:textColorHint="@color/colorWhite"
            android:textSize="15dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.4" />
    
    </android.support.constraint.ConstraintLayout>
    






    Merci d'avance pour votre aide ! 

    -
    Edité par JohnOlier 10 juin 2019 à 19:30:11

    • Partager sur Facebook
    • Partager sur Twitter
      10 juin 2019 à 22:40:03

      Hello,

      Si je comprends bien, tu as du mal à passer le lien d'une activité à une autre ?

      As-tu également du mal pour réceptionner ton EditText et l'ajouter dans ta ListView ?







      • Partager sur Facebook
      • Partager sur Twitter

      Ne pas oublier de mettre le sujet en "Résolu" si celui-ci l'est.

        11 juin 2019 à 0:09:18

        Salut,

        Effectivement, j'ai du mal à passer le lien d'une activité à une autre, j'ai également du mal pour réceptionner mon EditText pour ensuite l'ajouter la la liste !

        • Partager sur Facebook
        • Partager sur Twitter
          13 juin 2019 à 2:03:46

          • Pour réceptionner l'EditText :
          String variable = editText.getText();
          • Pour faire passer une variable d'une activité à une autre tu peux utiliser les Extras :

          L'envoyer :

          Intent i = new Intent(Activity1.this, Activity2.class);   
          String variable = null;
          i.putExtra("STRING_VARIABLE",variable);

          La récupérer :

          String newVariable;
          if (savedInstanceState == null) {
              Bundle extras = getIntent().getExtras();
              if(extras == null) {
                  newVariable = null;
              } else {
                  newVariable = extras.getString("STRING_I_NEED");
              }
          } else {
              newVariable = (String) savedInstanceState.getSerializable("STRING_VARIABLE");
          }
          • Pour l'ajouter à ta liste il est préférable de créer une ArrayList au préalable et d'y ajouter ta variable récupéré à l’intérieur :
          Je mis connais pas en flux RSS et je ne comprends pas assez bien ton projet, mais en gros voilà comment créer une ListView avec une ArrayList.
          @Override
              protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_list);
                  ArrayAdapter adapter;
                  ListView lv;
                  lv = (ListView)findViewById(R.id.my_list);
          
                  ArrayList<String> list = getPopulatedArrayList();
                  adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list);
                  lv.setAdapter(adapter);
              }
              public ArrayList<String> getPopulatedArrayList() {
                  ArrayList<String> myList = new ArrayList<String>();
                  myList.add(variable1);
                  myList.add(variable2);
                  myList.add(variable3);
          
                  return myList;
              }
          }
          Plus d'éclaircissement pour que je puisse mieux t'aider ;)




          • Partager sur Facebook
          • Partager sur Twitter

          Ne pas oublier de mettre le sujet en "Résolu" si celui-ci l'est.

          Android studio redirection RSS feed vers ListView

          × 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