Passing a List to another Activity in Android

后端 未结 3 530
生来不讨喜
生来不讨喜 2020-12-01 16:47

I\'ve created a list and would like to pass the list to another activity but i\'m getting an error on the putExtra statement when i create the intent. Just wondering is ther

相关标签:
3条回答
  • 2020-12-01 17:30

    You can't pass a List in Intent.putExtras(String name, List<?> list);. I think you can use an Array of String and pass it in putExtras like this:

    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 {
                String[] selItemArray = new String[selItemList.size()];
                // Copy your List of Strings into the Array, and then pass it in your intent
                // ....
                Intent intent = new Intent(Recipes2.this, XMLParser.class);
                intent.putExtra("items_to_parse", selItemArray);
                startActivityForResult(intent, 0);              
            }
        }
    });
    
    0 讨论(0)
  • 2020-12-01 17:44

    You can use putStringArrayListExtra from 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);              
                }
            }
            });
    

    And in your 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);
                }
            }
    
    0 讨论(0)
  • 2020-12-01 17:49

    I know it is a little late and this question has an answer already but here is another way.

    simply create another object define it as Serializable and give it a list variable and send that using putExtra on your intent like this:

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

    and then for sending it do this:

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

    and to get the object you have created do this:

    Category cat = (Category) extras.get("listOfObjects");
    cat.getObjects;
    
    0 讨论(0)
提交回复
热议问题