0

如何在类之间传递 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);

我想在两者之间完整地传递机会数组列表。我应该... - 使用捆绑包(我尝试过但无法找出正确的语法,这似乎有点矫枉过正/也许有更好的方法?) - 公开机会/以某种方式暴露给两个类 - 传递机会作为参数?

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

4

5 回答 5

1

您不能像这样创建活动:

public void updateOpportunities(ArrayList<Opportunity> opportunities) {     
   OppListActivity a = new OppListActivity();
   }

您应该始终使用 Intent。在 Intent 中,您可以在 ArrayList 中添加一个“额外”,稍后您将在 ListActivity 中阅读它。请注意,您可能需要让 Opportunity 实现 Parcelable。在 StackOverflow 和官方文档中都有很多关于这两个主题的信息。

于 2012-10-29T15:04:25.143 回答
1

putExtra如果您正在使用 anIntent来触发下一个活动,则On way 是使用。它看起来像这样:

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");
于 2012-10-29T15:10:51.367 回答
1

你需要使用意图来开始一个新的活动。您实际上可以将可序列化对象放入您的意图的额外数据中:

    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该类 extends Serializable

于 2012-10-29T15:09:53.560 回答
0

通常,您在切换到其他活动时开始新意图时会添加一个额外的捆绑包。例如

ArrayList<String> theArrayList = new ArrayList<String>();
Intent i = new Intent(this,TheNewActivity.class);
i.putStringArrayListExtra("list",theArrayList);
startActivity(i);
finish();
于 2012-10-29T15:15:09.057 回答
0

hiiii..... 你可以使用 Bean,与一个 ArrayList

例如

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 在每个活动中使用您的数据

例如

getUserId();
getUserPassword(); 
于 2013-04-12T13:17:32.530 回答