将列表传递给Android中的另一个活动

时间:2011-05-22 09:54:40

标签: android android-activity parameter-passing android-intent

我已经创建了一个列表,并希望将列表传递给另一个活动,但是当我创建intent时,我在putExtra语句中收到错误。只是想知道是否有任何简单的方法来传递字符串列表而不是单个字符串?

由于

private List<String> selItemList;
private ListView mainListView = null;       

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.recipes);
        Button searchBtn = (Button) findViewById(R.id.searchButton);
        searchBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            if (selItemList == null) {
                Toast.makeText(getApplicationContext()," Please Make A Selection ", Toast.LENGTH_SHORT).show();
            } else {
                Intent intent = new Intent(Recipes2.this, XMLParser.class);
                intent.putExtra("items_to_parse", selItemList);
                startActivityForResult(intent, 0);              
            }
        }
        });

3 个答案:

答案 0 :(得分:19)

您可以使用putStringArrayListExtra

中的Intent
  

public Intent putStringArrayListExtra   (String name,ArrayList value)

  private final List<String> selItemList;
  private ListView mainListView = null;       

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.recipes);
        Button searchBtn = (Button) findViewById(R.id.searchButton);
        searchBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            if (selItemList == null) {
                Toast.makeText(Recipes2.this," Please Make A Selection ", Toast.LENGTH_SHORT).show();
            } else {
                Intent intent = new Intent(Recipes2.this, XMLParser.class);
                intent.putStringArrayListExtra("items_to_parse", (ArrayList<String>) selItemList);
                startActivityForResult(intent, 0);              
            }
        }
        });

在您的XMLParser.class中:

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (getIntent().getExtras() != null) {
            for(String a : getIntent().getExtras().getStringArrayList("items_to_parse")) {
                Log.d("=======","Data " + a);
            }
        }

答案 1 :(得分:9)

您无法在Intent.putExtras(String name, List<?> list);中传递列表。 我想你可以使用Array的{​​{1}}并将其传递给String,如下所示:

putExtras

答案 2 :(得分:4)

我知道这有点晚了,这个问题已经有了答案,但这是另一种方式。

只需创建另一个对象,将其定义为Serializable并为其指定一个列表变量,并使用putExtra上的intent发送该变量,如下所示:

public class Category implements Serializable {
private List<YourObject> objects;

public Category() {
}

public List<YourObject> getObjects() {
    return objects;
}

public void setObjects(List<YourObject> objects) {
    this.objects = objects;
}

然后发送它:

Category cat = new Category();
cat.setObjects(objects);
intent.putExtra("listOfObjects",cat);
startActivity(intent);

并获取您创建的对象:

Category cat = (Category) extras.get("listOfObjects");
cat.getObjects;