2017-11-15 16 views
1

"subZ"という名前のArrayList(252個の要素を持つ)に格納された値からグラフを描画する必要があります。私の主な活動では、私は値を保存し、次のアクティビティではそれを描きます。アクティビティ間でArrayList <Float>を送信

だから私はこのようにそれを送信します

Intent change_screen = new Intent(MeasureScreenActivity.this, ResultScreenActivity.class); 
//Send variables to another activity 
change_screen.putExtra("standard_measurement",standard_measurement); 
change_screen.putExtra("current_measurement",current_measurement); 
change_screen.putExtra("subZ", subZ); 
startActivity(change_screen); 
//Effect of transition 
overridePendingTransition(R.anim.fade_in,R.anim.fade_out); 
finish(); 

そして、私はこのようにそれを受け取る他の活動に:

//Store the data passed from MeasureScreenActivity 
Intent intent = getIntent(); 
Bundle bundle = intent.getExtras(); 

//Make sure that bundle is not null 
if(bundle != null) { 
    standard_measurement = (String) bundle.get("standard_measurement"); 
    current_measurement = (int) bundle.get("current_measurement"); 
    subZ = (ArrayList<Float>) bundle.get("subZ"); 
} 

私の質問は次のとおりです。よくこの方法で行われていますか? metod putExtra(String、ArrayList)は実際には存在しないためです。

私は配列へのArrayListをキャストしている他の方法を知っている:

Float aux[] = subZ.toArray(); 

そして、以前より同じ方法で送信する方法putExtra(文字列、フロート[])を使用します。

私はメインスレッドを飽和させたくないので、これを行うにはどの方法が最適かわかりません。

私が考えている他の方法は、主なアクティビティを描画し、それを表示する次のアクティビティに描画を送信することです。しかし、それが可能かどうかはわかりません。

この3つのオプションのうち、どれがメインスレッドより少なく飽和しますか?

答えて

0

セルジオは、答えはputParcelableArrayListExtra()

である。しかしアーキテクチャコンポーネントのAndroidの一部で、何か新しいものがあります。 LiveData https://developer.android.com/topic/libraries/architecture/livedata.htmlを使用して、あなたのアクティビティで共有できるViewModelの配列を保つことができます。

+0

ArrayList<Float> list = new ArrayList<>(); Intent i = new Intent(MeasureScreenActivity.this, ResultScreenActivity.class); i.putExtra("arg_key", list); 

はエクストラゲット)が、フロートがないParcelabel –

+0

まあから延びているので、それが動作するかどうか、あなたは何をしたか、OKでないエラーを与えます問題。 –

+0

最後に、私はそれを私の持っていたようにしました。メインスレッドのためにはそれほど重視されていないようです。 –

0

あなたは change_screen.putStringArrayListExtra("subZ", subZ);代わりの change_screen.putExtra("subZ", subZ);

+0

この関数はArrayList にあり、ArrayList があります。だから私はそれを送信する前にキャストし、それを受け取ったときに他のキャストする必要がありますか? –

0

でのArrayListを送ることができますはSerializableを使用してみましたか?私もputParcelableArrayListExtra(のオプションを試してみました

ArrayList<Float> list = (ArrayList<Float>) getIntent().getSerializableExtra("arg_key"); 
関連する問題