2017-02-02 3 views
1

を通じて私は、カスタムのArrayListのはリストを渡す方法<CustomObject>はインテント

ArrayList<AvailableCountry> 
     listAvailableCountries = new ArrayList(); 

オブジェクトがあると私は

AvailableCountry obj1=new AvailableCountry(); 
AvailableCountry obj2=new AvailableCountry(); 

が、私はArrayListに追加した

AvailableCountryの2つのオブジェクトを持っている

listAvailableCountries.add(obj1); 
listAvailableCountries.add(obj2); 

これはカスタムオブジェクトクラスです

public class AvailableCountry { 

@SerializedName("Disabled") 
@Expose 
private Boolean disabled; 
@SerializedName("Selected") 
@Expose 
private Boolean selected; 
@SerializedName("Text") 
@Expose 
private String text; 
@SerializedName("Value") 
@Expose 
private String value; 

public Boolean getDisabled() { 
    return disabled; 
} 

public void setDisabled(Boolean disabled) { 
    this.disabled = disabled; 
} 

public Boolean getSelected() { 
    return selected; 
} 

public void setSelected(Boolean selected) { 
    this.selected = selected; 
} 

public String getText() { 
    return text; 
} 

public void setText(String text) { 
    this.text = text; 
} 

public String getValue() { 
    return value; 
} 

public void setValue(String value) { 
    this.value = value; 
} 

} 

アクティビティAからアクティビティBへこのアライリストを渡したいと思います。 アクティビティBで受け取りたいのですが、 どうすればこのタスクを達成できますか?全ての

+2

のように受け取る共有することができGsonを使用して'Parcelable' – 0xDEADC0DE

+0

このリンクに従ってくださいhttp://stackoverflow.com/a/2141166/6032850 –

答えて

1

1)まず、クラスBにクラスAからのArrayListを送信するカスタム・オブジェクト・クラス

public class AvailableCountry implements Serializable { 

@SerializedName("Disabled") 
@Expose 
private Boolean disabled; 
@SerializedName("Selected") 
@Expose 
private Boolean selected; 
@SerializedName("Text") 
@Expose 
private String text; 
@SerializedName("Value") 
@Expose 
private String value; 

public Boolean getDisabled() { 
    return disabled; 
} 

public void setDisabled(Boolean disabled) { 
    this.disabled = disabled; 
} 

public Boolean getSelected() { 
    return selected; 
} 

public void setSelected(Boolean selected) { 
    this.selected = selected; 
} 

public String getText() { 
    return text; 
} 

public void setText(String text) { 
    this.text = text; 
} 

public String getValue() { 
    return value; 
} 

public void setValue(String value) { 
    this.value = value; 
} 

}

2)に直列化インタフェースを実装

Intent intent =new Intent(A.this,B.class); 
intent.putExtra("listCountry", (Serializable) listAvailableCountries); 
startActivity(intent) 

3)クラスBでarraylistを受け取る

ArrayList<AvailableCountry>listAvailableCountries = (ArrayList<AvailableCountry>) getIntent().getSerializableExtra("listCountry"); 
+0

私の答えが有効であれば、upvoteをマークすることを忘れないでください。 –

+0

あなたは素晴らしいです。あなたは私の一日を救った。 – SoftIdea

+0

ありがとうございました – SoftIdea

0

我々は簡単にデータ

compile 'com.google.code.gson:gson:2.4' 

がA.class

Intent intent = new Intent(A.this, B.class); 
    String favJSONString = new Gson().toJson(listAvailableCountries); 
    intent.putExtra("listAvailableCountries", favJSONString); 
    startActivity(intent); 

に、このように送信し、AvailableCountry`が実装 `させることで、このB.class

try { 
     Type type = new TypeToken<List<AvailableCountry>>() { 
     }.getType(); 
     ArrayList<AvailableCountry> listAvailableCountries = new Gson().fromJson(getIntent().getStringExtra("listAvailableCountries"), type); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
関連する問題