61 votes

Liste Intent.putExtra

Duplicata possible :
Comment mettre une liste en intention

Je veux passer un Liste d'une activité à l'autre. Jusqu'à présent, je n'ai pas réussi. Voici mon code.

//desserts.java

private List<Item> data;  

@Override
public void onCreate(Bundle icicle) {
//Code
data.add(new Item(10, "dessert1"));
data.add(new Item(11, "dessert2"));
data.add(new Item(12, "dessert3"));
data.add(new Item(13, "dessert4"));
data.add(new Item(14, "dessert5"));
data.add(new Item(15, "dessert6"));
data.add(new Item(16, "dessert7"));
data.add(new Item(17, "dessert8"));
data.add(new Item(18, "dessert9"));
data.add(new Item(19, "dessert10"));
data.add(new Item(20, "dessert11"));  

//Some more code  
}  

@Override
public void onClick(View v) {  
Intent view_order_intent = new Intent(this, thirdpage.class);
view_order_intent.putExtra("data", data); 
startActivity(view_order_intent);  
}   

Mais je ne suis pas capable de mettre datos de cette façon. J'ai posé cette question plus tôt mais il ne s'est pas passé grand-chose.
Veuillez m'aider. Aidez-moi aussi à savoir comment obtenir datos dans l'activité suivante.

125voto

Mandel Points 865

En supposant que votre liste est une liste de chaînes de caractères, créez un fichier de données. ArrayList<String> et utiliser intent.putStringArrayListExtra("data", data)

Voici un squelette du code dont vous avez besoin :

  1. Déclarer la liste

    private List<String> test;
  2. Liste Init à l'endroit approprié

    test = new ArrayList<String>();

    et ajouter des données, le cas échéant, à test .

  3. Passer à l'intention comme suit :

    Intent intent = getIntent();  
    intent.putStringArrayListExtra("test", (ArrayList<String>) test);
  4. Récupérez les données comme suit :

    ArrayList<String> test = getIntent().getStringArrayListExtra("test");

J'espère que cela vous aidera.

21voto

Sunil Kumar Sahoo Points 21032

Si vous utilisez ArrayList au lieu de List, votre problème sera également résolu. Dans votre code, modifiez seulement List en ArrayList.

private List<Item> data;

12voto

N-JOY Points 5695

Vous pouvez le faire de deux façons en utilisant

  • Serializable

  • Parcelable.

Cet exemple vous montrera comment l'implémenter avec des éléments sérialisables.

class Customer implements Serializable
{
   // properties, getter setters & constructor
}

// This is your custom object
Customer customer = new Customer(name, address, zip);

Intent intent = new Intent();
intent.setClass(SourceActivity.this, TargetActivity.this);
intent.putExtra("customer", customer);
startActivity(intent);

// Now in your TargetActivity
Bundle extras = getIntent().getExtras();
if (extras != null)
{
    Customer customer = (Customer)extras.getSerializable("customer");
    // do something with the customer
}

Maintenant, jetez un coup d'œil à ceci. Ce lien vous donnera un bref aperçu de la façon de le mettre en œuvre avec Parcelable.

Regardez ceci. . Cette discussion vous permettra de savoir quelle est la meilleure façon de la mettre en œuvre.

Gracias.

-2voto

Rasel Points 9997
 //To send from the activity that is calling another activity via myIntent

    myIntent.putExtra("id","10");
    startActivity(myIntent);

    //To receive from another Activity

            Bundle bundle = getIntent().getExtras();
            String id=bundle.getString("id");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X