2011-07-01 17 views
35

可能性の重複:
How to put a List in intentIntent.putExtra一覧

私は別の活動から一覧を通過したいです。これまで私は成功していません。これは私のコードです。

//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); 
} 

しかし、私はデータこの言い方をすることはできませんよ。私はこの質問にearlierと尋ねたが、それほど多くはなかった。
お手伝いします。また、次のアクティビティでデータを取得する方法を教えてください。あなたのリストは、文字列のリストであると仮定すると

+3

ご了承ください。これらのようなコメントは役に立ちません。 –

答えて

81

データArrayList<String>を作成し、ここでintent.putStringArrayListExtra("data", data)

を使用するにはあなたが必要なコードのスケルトンです:

  1. 宣言リスト

    private List<String> test; 
    
  2. 適切な場所で初期リスト

    test = new ArrayList<String>(); 
    

    testに適宜データを追加します。意図に

  3. パスを次のように次のように

    Intent intent = getIntent(); 
    intent.putStringArrayListExtra("test", (ArrayList<String>) test); 
    
  4. は、データを取得します:

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

希望に役立ちます。

+0

私はそれをArrayListとして宣言するか、ArrayListとして初期化する必要がありますか? –

+0

@Stone編集を参照してください。 – Mandel

+1

しかしそのようにして、リストに1つの項目しか挿入できません。 2つの文字列が必要です。これはアイテムオブジェクトで取得しています。 –

0
//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"); 
+2

リストはどのようにデータを送信していますか? "10"とは何ですか? –

+0

idはあなたがそれから取り出すことができる文字列です。そして、あなたが送信しているデータは10です。最後の行では、呼び出し元activiryから来る10を取得します。 – Rasel

+0

はい私は私のコード。助けてくれなかった。 –

8

あなたは

  • Serializableを

  • Parcelableを使用して2つの方法でそれを行うことができます。

このexamleは今this.でこのリンクを見て、シリアライズ

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 
} 

でそれを実装する方法を紹介しますあなたのParcelableでそれを実装する方法の概要を提供します。

this.をご覧ください。このディスカッションでは、それを実装する方がはるかに良い方法を知ることができます。

ありがとうございました。

+1

これは実際にLISTをインテント内に置く方法についての質問には実際には答えません。 1つの特定のアイテムをインテント内に配置する方法についてのみ。 –

+0

@ N-JOY 'do something with customer'のサンプルコードがありますか?顧客モデルをループしてそれぞれの情報を得るにはどうしたらいいですか?どうもありがとう。 – Woppi

13

リストの代わりにArrayListを使用すると、問題が解決されます。 コードでは、List into ArrayListのみを変更します。

private List<Item> data; 
+0

後で 'ArrayList items =(ArrayList )getArguments()。getSerializable(EXTRA_ITEMS);'でリストを読むことができます。 – CoolMind