2016-08-30 23 views
2

我想從我的另一個使用ListView的Activity打印一個來自ArrayList的字符串。我在意圖變量中傳遞了一個鍵和值。使用這個。從另一個Activity使用ListView打印ArrayList

MainActivity

ArrayList<String> arrayList = new ArrayList<String>(); 
Intent intent = new Intent(getApplicationContext(), ViewCart.class); 

mealOneIncrement++; 
quantityOne.setText(Integer.toString(mealOneIncrement)); 
mealOneCost = mealOneIncrement * mealOnePrice; 
price.setText(Double.toString(mealOneCost)); 

String mealOneSummayName = name.toString(); 
String mealOneSummaryDescription = description.toString(); 
String mealOneSummaryQuantity = String.valueOf(mealOneIncrement); 
String mealOneSummaryCost = String.valueOf(mealOneCost); 

arrayList.add(mealOneSummayName); 
arrayList.add(mealOneSummaryDescription); 
arrayList.add(mealOneSummaryQuantity); 
arrayList.add(mealOneSummaryCost); 

intent.putExtra("data", arrayList); 

正如你可以在這裏看到我通過arrayList變量值可以從另一個活動通過這一點。

SecondActivity

ListView listView = (ListView) findViewById(R.id.listView); 

String[] mealSummary = {}; 
ArrayAdapter adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, mealSummary); 
Bundle bundle = getIntent().getExtras(); 

String data = bundle.getString("data"); 
listView.setAdapter(adapter); 

我在這部分String data = bundle.getString("data");有點迷惑我不知道如果我傳遞一個正確的變量,以我的ListView這樣我就可以能夠顯示arrayList變量我的ListView。我做錯了嗎?任何幫助會感激:)

+0

你有mealSummary在ArrayAdapter的構造。你需要傳遞一個數據集。 – Raghunandan

回答

0

有一些問題與您的代碼:

intent.putExtra("data", arrayList); 

你的包串的ArrayList裏面放,但隨後

String data = bundle.getString("data"); 

你得到只是一個串。您需要使用bundle.getStringArrayList("data")

ArrayList<String> data = bundle.getStringArrayList("data") 

也(不涉及您的問題),我建議使用

Intent intent = new Intent(this, ViewCart.class); 

代替

Intent intent = new Intent(getApplicationContext(), ViewCart.class); 
+0

'this'和'getApplicationContext()'有什麼區別。我也試過'ArrayList data = bundle.getStringArrayList(「data」)'但是在我的'listView.setAdapter(adapter);'中。 'data'變量永遠不會被使用,它在我的listView上不會打印任何東西。 – Francisunoxx

+0

@Francisunoxx http://stackoverflow.com/questions/7298731/when-to-call-activity-context-or-application-context。這是指活動上下文,因爲活動擴展上下文https://developer.android.com/reference/android/app/Activity.html。您需要爲適配器 – Raghunandan

+0

設置一個數據集,以便在適配器中使用數據,否則適配器將爲空。 –

0

通行證的ArrayList作爲putStringArrayListExtra,

Intent intent = new Intent(this, ViewCart.class); 
    intent.putStringArrayListExtra("data", arrayList); 
    startActivity(intent); 

讓您ArrayList使用getStrin gArrayListExtra,

arrayList = getIntent().getStringArrayListExtra("data"); 
0

您可以修改這一點。

在你secondActivity獲取數據,如

ArrayList<String> data = getIntent().getSerializableExtra("data"); 

現在你的ArrayList得到了你的數據。如果你想將這些數據添加到mealSummary再使用,

mealSummary = (String[]) data.toArray(); 

不要忘記調用adapter.notifyDataSetChanged()

相關問題