0
votes

Envoi et réception d'arraylist d'une activité à une autre

J'essaie d'envoyer une arrayliste de la notaactivité à la mainfultivité.

ArrayList<String> data = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) 
{
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_note_pad);

  final FloatingActionButton button = 
     (FloatingActionButton)findViewById(R.id.save_button);

  button.setOnClickListener(new View.OnClickListener() 
   {

     @Override
     public void onClick(View v) 
     {
       SaveData();
     }
   });
}

public void SaveData()
{
   FileOutputStream outputStream;

   try 
   {
     EditText editText = findViewById(R.id.textView3);

     final String str = editText.getText().toString();

     String content = findViewById(R.id.textView).toString();
     Log.d("Test","inside try block");

     outputStream = openFileOutput(str, Context.MODE_PRIVATE);
     outputStream.write(content.getBytes());

     Toast.makeText(getApplicationContext(),"Note 
     saved",Toast.LENGTH_SHORT).show();

     Log.d("Test","save done");

     final String str1 = editText.getText().toString();
     data.add(str1);

     SendData();
   }
   catch (FileNotFoundException e)
   {
       e.printStackTrace();
   }
   catch (IOException e)
   {
       e.printStackTrace();
   }
}

   public void SendData()
   {
      EditText editText = findViewById(R.id.textView3);

      Log.d("Check","str:"+data);
      Intent intent = new Intent(NotePad.this,MainActivity.class);
      intent.putExtra(EXTRA_MESSAGE, data);
      startActivity(intent);
   }
}

My Main Activity

public class MainActivity extends AppCompatActivity 
{
   private RecyclerView recyclerView;
   private RecyclerView.Adapter mAdapter;
   private RecyclerView.LayoutManager layoutManager;
   ArrayList<String> notes = new ArrayList<String>();




   @Override
   protected void onCreate(Bundle savedInstanceState)
   {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);


      Intent intent = getIntent();
      notes = intent.getStringArrayListExtra(NotePad.EXTRA_MESSAGE);

      Log.d("Check","title added: "+notes);


      final FloatingActionButton button = 
       (FloatingActionButton)findViewById(R.id.add_notebutton);


      button.setOnClickListener(new View.OnClickListener() 
      {

         @Override
         public void onClick(View v) 
         {
             Intent intent = new Intent(MainActivity.this,NotePad.class);
             startActivity(intent);
         }
      });

      recyclerView = (RecyclerView)findViewById(R.id.recycle_list);


      layoutManager = new LinearLayoutManager(this);
      recyclerView.setLayoutManager(layoutManager);
      mAdapter = new MyAdapter(notes);
      recyclerView.setAdapter(mAdapter);

   }

}

my Adapter code

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> 
{

  ArrayList<String> Notes_list = new ArrayList<String>();

   public MyAdapter(ArrayList<String> notes)
   {
      Notes_list = notes;
   }

   @NonNull
   @Override
     public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int 
     viewType) 
   {
     LayoutInflater inflater = LayoutInflater.from(parent.getContext());
      View view = inflater.inflate(R.layout.list_items,parent,false);
      return new MyViewHolder(view);
   }

   @Override
   public void onBindViewHolder(@NonNull MyViewHolder holder, int position) 
   {

       holder.mTextView.setText(Notes_list.get(position));
   }

   @Override
   public int getItemCount()  
   {
      return Notes_list.size();
   }

   public class MyViewHolder extends RecyclerView.ViewHolder 
   {
       TextView mTextView;
       public MyViewHolder(@NonNull View itemView)
       {
          super(itemView);
          mTextView = (TextView) itemView.findViewById(R.id.view_holder);
       }
   }
}


1 commentaires

S'il vous plaît Modifier Votre question et formatez votre code, il est difficile de lire. Retirez les backtsks au début. Indendez votre code 4 espaces ou cliquez sur le bouton {} . Fixez le formatage en indençant le code en blocs.


3 Réponses :


0
votes

Essayez ceci: - xxx


0 commentaires

0
votes

La meilleure façon donnée dans le document Android pour envoyer la arraylist ou tout objet personnalisé d'une activité à une autre pour essayer le processus de poids léger pour cela dans Android

Lire la vue d'ensemble complète à ce sujet https://developer.android.com/reference / Android / OS / Parcelable

J'espère que cela vous aidera à vous


0 commentaires

1
votes

Vous essayez de passer des arraylistes et de lire des données de l'intention de GetStringarrayListextra Méthode. Vous devez mettre des données comme ceci: xxx

edit : vérifier si l'intention a la clé: xxx

note : S'il s'agit d'un terrain de jeu, c'est OK. Mais si vous essayez de Construisez quelque chose que votre architecture est fausse. Ce n'est pas une bonne idée Passer la même matrice à chaque fois entre deux activités. Vous pouvez utiliser Méthode de startActivityForresult et obtenez une nouvelle note ONACTIVIVITURE Méthode de la mainfice.


3 commentaires

Même erreur: tentative d'invoquer la méthode virtuelle 'int java.util.arraylist.Size ()' sur une référence objet nulle à com.example.quicknote.myadapter.getitemcount (myAdapter.java: 39)


Parce que l'initialement, votre main-d'œuvre commence et aucune intention passée du bloc-notes. Voir la réponse mise à jour.


Stackoverflow.com/Questions/58300796/...