[英]How to pass ArrayList of Custom objects to new activity?
我已經創建了textViewTable類,在該類中,我正在保存與要傳遞給Next Activity的TextViews相關的數據。
public class TextViewTable implements Serializable {
private String FONT;
private String TEXT;
private float TEXT_SIZE;
private ColorStateList TEXT_COLOR;
private float MARGIN_TOP;
private float MARGIN_BOTTOM;
private float MARGIN_LEFT;
private float MARGIN_RIGHT;
private Boolean BoldFlag;
private Boolean ItalicFlag;
private Boolean NormalFlag;
public TextViewTable(){
}
public TextViewTable(String FONT, String TEXT, float TEXT_SIZE, ColorStateList TEXT_COLOR, float MARGIN_TOP, float MARGIN_BOTTOM, float MARGIN_LEFT, float MARGIN_RIGHT, Boolean boldFlag, Boolean italicFlag, Boolean normalFlag) {
this.FONT = FONT;
this.TEXT = TEXT;
this.TEXT_SIZE = TEXT_SIZE;
this.TEXT_COLOR = TEXT_COLOR;
this.MARGIN_TOP = MARGIN_TOP;
this.MARGIN_BOTTOM = MARGIN_BOTTOM;
this.MARGIN_LEFT = MARGIN_LEFT;
this.MARGIN_RIGHT = MARGIN_RIGHT;
BoldFlag = boldFlag;
ItalicFlag = italicFlag;
NormalFlag = normalFlag;
}
}
從我的活動,我想發送TextViewTable類的對象的ArrayList。 我使用下面的函數發送ArrayList。 但是每次我得到空指針異常。 請幫助解決此問題。
public void onClick(View view)
{
Intent intent = new Intent(getApplicationContext(), displayImage.class);
Bundle bundleObject = new Bundle();
bundleObject.putSerializable("key", textViewsData);
intent.putExtras(bundleObject);
try {
startActivity(intent);
}catch (Exception e){
System.out.println(e);
}
}
};
當前使用Bundle.putSerializable
將TextViewTable
類對象ArrayList
發送到下一個Activity,但未在TextViewTable
類中實現Serializable
接口:
public class TextViewTable implement Serializable{
....
}
您可以按照ρяσsρєяK的答案進行操作,也可以按照以下代碼操作:
public class GeneralClass{
public static ArrayList<TextViewTable> data = new ArrayList<TextViewTable>();
}
然后您可以在第一個活動中將數據存儲在上述arraylist中,如下所示:
Collections.copy(GeneralClass.data,textViewsData);
現在,您可以在第二個活動中使用GeneralClass.data arraylist;
將POJO
從一項活動發送到另一項活動:
Bundle bundle = new Bundle();
ArrayList<StatusData> passData = new ArrayList<StatusData>();
bundle.putSerializable("key", passData);
intent.putExtras(bundle);
startActivity(intent);
//then the transaction part
獲得捆綁包`:
Bundle bundle = new Bundle();
bundle = getIntent().getExtras();
ArrayList<StatusData> dataReceived = (ArrayList<StatusData>)bundle.getSerializable("key"));
然后做任何您想做的事。希望對您有所幫助。 您也可以使用Parcelable 。
第一次活動
public void shareCustomArrayListObject(ArrayList<CUSTOMOBJECT> arrayList) {
if (arrayList != null && arrayList.size() > 0) {
Intent intent = new Intent(getApplicationContext(), displayImage.class);
Bundle bundleObject = new Bundle();
bundle.putSerializable("KEY", arrayList);
intent.putExtras(bundleObject);
}
}
您想要檢索數組列表的第二個活動
private ArrayList<CUSTOMOBJECT> arrayList;
Bundle bundle=YOURACTIVITY.getBundle();
if(bundle==null){
bundle=getArguments();
}
if(bundle.getSerializable("KEY")!=null){
arrayList=(ArrayList)bundle.getSerializable("KEY");
}
並且如果您已經為arraylist創建了一個bean類,則需要實現
public class CUSTOMOBJECT implements Serializable{
你完成了:)
您應該使用Parcelable對象在活動之間傳遞數據,如下所示:
將數據從活動A傳遞到活動B
Intent intent=new Intent(A.this,B.class);
intent.putParcelableArrayListExtra("key", array_list);
startActivity(intent);
從活動A獲取活動B中的數據
Intent intent=getIntent();
array_list = intent.getParcelableArrayListExtra("key");
很簡單。
我希望這能幫到您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.