我试图在Android开发中的片段之间传递arraylist。这是我试图将Transaction数组列表传递给另一个片段的部分:
switch (menuItem.getItemId()){
case R.id.expenses:
final ExpenseActivity expenseFragment = new ExpenseActivity();
new GetAllTransactionAsyncTask(
new GetAllTransactionAsyncTask.OnRoutineFinished() {
public void onFinish() {
FragmentTransaction expsenseTransaction = getSupportFragmentManager().beginTransaction();
Bundle bundle = new Bundle();
//bundle.putParcelableArrayList("transactionlist", GetAllTransactionAsyncTask.allTransaction);
//bundle.putString("transactionlist", GetAllTransactionAsyncTask.allTransaction);
expenseFragment.setArguments(bundle);
expsenseTransaction.replace(R.id.frame,expenseFragment);
expsenseTransaction.commit();
}
}).execute(session_accountID);
return true;
}
GetAllTransactionAsyncTask.allTransaction
将返回一个事务数组列表。至于我的事务实体类,我实现了Serializable:
import java.io.Serializable;
@SuppressWarnings("serial")
public class Transaction implements Serializable{
...
}
我不确定如何在片段之间传递对象数组列表。我注释掉了两行,因为它们是不兼容的类型。
有什么想法吗?提前谢谢。
答案 0 :(得分:11)
ArrayList<Transaction> transactionList = new ArrayList<>();
将transactionList传递给bundle
Bundle bundle = new Bundle();
bundle.putSerializable("key", transactionList);
和接收片段
ArrayList<Transaction> transactionList = (ArrayList<Transaction>)getArguments().getSerializable("key");
注意:要通过bundle传递bean类,你必须实现序列化,即
YourBeanClass实现Serializable
答案 1 :(得分:2)
在build.gradle
compile 'com.google.code.gson:gson:2.7'
String str = new Gson().toJson(arrayList);
bundle.putStrin("str",str);
和目的地fragemnt
String str = bundle.getString("str");
arrayList = new Gson().fromJson(str,ArrayList.class);
答案 2 :(得分:1)
1.您可以通过转换为@Bhupat指定的json来传递它。
2.另一种方法是将您的Transaction类设为parcelable并使用
b.putParcelableArrayList("list",your_list);
获取清单
your_list = getArguments().getParcelableArrayList("list");
EDIT 你有太多的sepcigy类型令牌来取回它
transactionlist = new Gson().fromJson(str, new TypeToken<List<type of the list passed>>);
在您的情况下new TypeToken<List<Transaction>>
答案 3 :(得分:0)
您应该使您的Transaction类实现Serializable
,而不是实现Parcelable
。 Parcelable是您可以在Android上使用的最快的序列化机制,它比Serializable或JSON转换更快,并且使用更少的内存。