2016-08-30 74 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()