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);

機会 arraylist を 2 つの間でそのまま渡したいと思います。私は... - バンドルを使用します (私は試しましたが、正しい構文を解決できません。これはやり過ぎのようです/おそらくもっと良い方法がありますか?) - 機会を公開する/何らかの形で両方のクラスに公開する - 機会を渡すパラメータとして?

特定の構文 (疑似コードではない) を歓迎します。

4

5 に答える 5

1

次のようなアクティビティを作成することはできません。

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

常にインテントを使用する必要があります。Intent では、後で ListActivity で読み取る ArrayList に「追加」を追加できます。おそらく、Opportunity に Parcelable を実装させる必要があることに注意してください。StackOverflow と公式ドキュメントの両方に、これらのトピックの両方に関する多くの情報があります。

于 2012-10-29T15:04:25.143 に答える
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 に答える
1

On way は、次のアクティビティをトリガーするためにを使用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");
于 2012-10-29T15:10:51.367 に答える
0

hiiii..... 1 つの ArrayList で Bean を使用できます

例えば

ArrayList<RowItem> aryListbean=new ArrayList<rowItem>(); //your arraylist
RowItem rowItem=new RowItem();  // that is your bean class

ここで、getter/setter メソッドを持つ Bean であるクラス RowItem を作成する必要があります

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 に答える
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 に答える