简体   繁体   English

使用ListView从另一个Activity打印ArrayList

[英]Print ArrayList from another Activity using ListView

I'm trying to print a string from ArrayList in my another Activity using ListView. 我正在尝试使用ListView从另一个活动中的ArrayList打印字符串。 I passed a key and values in my intent variable. 我在意图变量中传递了键和值。 Using this. 使用这个。

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

As you can see here I passed arrayList variable as value for able to passed this from another Activity. 如您所见,我将arrayList变量作为值传递给了其他活动。

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

I'm little bit confuse in this part String data = bundle.getString("data"); 我在这部分有点困惑String data = bundle.getString("data"); I'm not sure if I'm passing a correct variable to my ListView so I can able to show the arrayList variable in my ListView . 我不确定是否要向ListView传递正确的变量,以便能够在ListView显示arrayList变量。 Am I doing it wrong? 我做错了吗? Any help would appreciated :) 任何帮助将不胜感激:)

There are some problems with your code: 您的代码存在一些问题:

intent.putExtra("data", arrayList);

you are putting inside the bundle an arrayList of String, but then 您将捆绑软件放入String的arrayList,但是然后

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

you are getting just a String. 您得到的只是一个字符串。 You need to use bundle.getStringArrayList("data") . 您需要使用bundle.getStringArrayList("data")

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

Also (not related to your problem), I recommend to use 另外(与您的问题无关),我建议使用

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

instead of 代替

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

Pass Arraylist as putStringArrayListExtra, 将Arraylist传递为putStringArrayListExtra,

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

Get your ArrayList using getStringArrayListExtra, 使用getStringArrayListExtra获取您的ArrayList,

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

You could modify this a bit. 您可以对此进行一些修改。

In your secondActivity get the data like 在您的secondActivity中获取如下数据

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

Now you got your data in an arrayList. 现在,您将数据保存在arrayList中。 If you wish to add this data to mealSummary then use, 如果您想将此数据添加到餐摘要中,请使用,

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

Don't forget to call adapter.notifyDataSetChanged() 不要忘记调用adapter.notifyDataSetChanged()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM