如何在类之间传递ArrayList?我想从这个扩展Activity ...
的类/方法传递一个ArrayListpublic class OpportunityActivity extends Activity {
public void updateOpportunities(ArrayList<Opportunity> opportunities) {
Intent intent = new Intent(this, OppListActivity.class);
startActivity(intent);
}
...扩展到扩展ListActivity的OppListActivity类,我使用这个机会ArrayList使用arraylist中的元素填充我的自定义ListView:
public class OppListActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
我想通过两个完整的机会之间的arraylist。我是不是该... - 使用一个捆绑(我已经尝试但无法找到正确的语法,这似乎有点矫枉过正/可能有更好的方法?) - 让机会公开/以某种方式暴露于两个班级 - 将机会作为参数传递?
特定语法(非伪代码)赞赏。
答案 0 :(得分:1)
您无法像这样创建活动:
public void updateOpportunities(ArrayList<Opportunity> opportunities) {
OppListActivity a = new OppListActivity();
}
你应该总是使用Intent。在Intent中,您可以使用ArrayList添加“额外”,稍后将在ListActivity中阅读。请注意,您可能需要使您的商机实现Parcelable。 StackOverflow和官方文档中有很多关于这两个主题的信息。
答案 1 :(得分:1)
您需要使用意图来开始新活动。实际上,您可以将可序列化对象放入intent的额外数据中:
public void updateOpportunities(ArrayList<Opportunity> opportunities) {
Intent intent = new Intent(this, OppListActivity.class);
intent.putExtra("opportunities", opportunities);
startActivity(intent);
}
在您的OppListActivity活动中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
ArrayList<Opportunity> opportunities = intent.getSerializableExtra("opportunities");
}
但您可能需要确保Opportunity
类扩展Serializable
。
答案 2 :(得分:1)
如果您使用putExtra
来触发下一个活动,则使用Intent
。它看起来像这样:
ArrayList<String> test_array = new ArrayList<String>();
// do something with test_array
Intent launchNextActivity = new Intent(getApplicationContext(), nextActivity.class);
launchNextActivity.putExtra("array", test_array);
startActivity(launchNextActivity);
然后在您启动的活动中,您可以使用以下内容来获取它:
Intent sender = getIntent();
ArrayList<String> passedInArray = new ArrayList<String>();
passedInArray = sender.getStringArrayExtra("array");
答案 3 :(得分:0)
通常在切换到其他活动时启动新意图时添加额外的包。 e.g
ArrayList<String> theArrayList = new ArrayList<String>();
Intent i = new Intent(this,TheNewActivity.class);
i.putStringArrayListExtra("list",theArrayList);
startActivity(i);
finish();
答案 4 :(得分:0)
hiiii .....你可以使用Bean,使用一个ArrayList
e.g
ArrayList<RowItem> aryListbean=new ArrayList<rowItem>(); //your arraylist
RowItem rowItem=new RowItem(); // that is your bean class
现在你必须创建一个RowItem类,这是你的Bean,它有getter / setter方法
for(....)
{
rowItem.setUserId(); // set method's example
rowItem.setPassword() // set method's exampl
aryListbean.add(rowItem);
}
现在,您可以使用getmethod
在每个活动中使用您的数据e.g
getUserId();
getUserPassword();