通过意图传递ArrayList
我正在尝试使用intent将arrayList传递给另一个活动。 这是第一个活动的代码。
case R.id.editButton: Toast.makeText(this, "edit was clicked", Toast.LENGTH_LONG).show(); Intent intent = new Intent(this, editList.class); intent.putStringArrayListExtra("stock_list", stock_list); startActivity(intent); break; 这是我尝试在第二个活动中检索列表的地方。 这里有什么不对吗?
 Intent i = new Intent(); //This should be getIntent(); stock_list = new ArrayList<String>(); stock_list = i.getStringArrayListExtra("stock_list"); 
	
在你的接收意图中,你需要做的是:
 Intent i = getIntent(); stock_list = i.getStringArrayListExtra("stock_list"); 
你拥有它的方式,你创造了一个新的空的意图,没有任何额外的。
如果你只有一个额外的,你可以将其压缩到:
 stock_list = getIntent().getStringArrayListExtra("stock_list"); 
我通过以String的forms传递ArrayList来完成这一项。
- 
在依赖关系块build.gradle中添加 compile 'com.google.code.gson:gson:2.2.4'。
- 
点击 与Gradle文件同步项目 
Cars.java :
 public class Cars { public String id, name; } 
FirstActivity.java
当你想 传递 ArrayList时 :
 List<Cars> cars= new ArrayList<Cars>(); cars.add(getCarModel("1", "A")); cars.add(getCarModel("2", "B")); cars.add(getCarModel("3", "C")); cars.add(getCarModel("4", "D")); Gson gson = new Gson(); String jsonCars = gson.toJson(cars); Intent intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("list_as_string", jsonCars); startActivity(intent); 
按function获取CarsModel :
 private Cars getCarModel(String id, String name){ Cars cars = new Cars(); cars.id = id; cars.name = name; return cars; } 
SecondActivity.java
 你必须导入java.lang.reflect.Type ; 
onCreate()来检索ArrayList :
 String carListAsString = getIntent().getStringExtra("list_as_string"); Gson gson = new Gson(); Type type = new TypeToken<List<Cars>>(){}.getType(); List<Cars> carsList = gson.fromJson(carListAsString, type); for (Cars cars : carsList){ Log.i("Car Data", cars.id+"-"+cars.name); } 
希望这会节省时间,我救了它。
完成
如果您使用通用数组列表 类而不是像特定的types
EX:
 private ArrayList<Model> aListModel = new ArrayList<Model>(); 
在这里, Model = Class
接收意图就像:
 aListModel = (ArrayList<Model>) getIntent().getSerializableExtra(KEY); 
务必谨记:
这里Model-class必须像下面这样实现: ModelClass实现Serializable