Android:在类之间传递ArrayList

时间:2012-10-29 15:00:38

标签: android class arraylist

如何在类之间传递ArrayList?我想从这个扩展Activity ...

的类/方法传递一个ArrayList
public 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。我是不是该... - 使用一个捆绑(我已经尝试但无法找到正确的语法,这似乎有点矫枉过正/可能有更好的方法?) - 让机会公开/以某种方式暴露于两个班级 - 将机会作为参数传递?

特定语法(非伪代码)赞赏。

5 个答案:

答案 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();