カスタム オブジェクトでいっぱいの ArrayList があります。この ArrayList を Bundle に保存し、後で取得する必要があります。
Serializable と Parcelable の両方で失敗したので、ArrayList のインデックスに関連付けられているオブジェクトを何らかの方法で保存しようとしているだけで、Bundle を復元してオブジェクトを追加し直すときにこれらをチェックしています。
私が持っているのは次のようなものです:
バンドルを保存する場合:
//Create temporary array of the same length as my ArrayList
String [] tempStringArray = new String[myList.size()];
//Convert the enum to a string and save it in the temporary array
for (int i = 0; i<myList.size();i++){
tempStringArray [i] = myList.get(i).getType(); //returns the enum in string form
}
//Write this to the Bundle
bundle.putStringArray("List", tempStringArray);
これで、もともと ArrayList にあったオブジェクトの列挙型を表す文字列の配列ができました。
したがって、バンドルを復元するとき、私が試みているのは次のようなものです。
//Temporary string array
String[] tempStringArray = savedState.getStringArray("List");
//Temporary enum array
ObjectType[] tempEnumArray = new ObjectType[tempStringArray.length];
for (int i = 0; i<tempStringArray.length;i++){
tempEnumArray[i]=ObjectType.valueOf(tempEnemies[i]);
}
これで、元々 ArrayList にあった各項目の列挙型が得られました。
私が今やろうとしているのは、次のようなものです(上記のforループ内に入ります):
myList.add(tempEnumArray[i].ObjectTypeThisEnumRefersTo());
明らかに、上記の「ObjectTypeThisEnumRefersTo()」メソッドは存在しませんが、これは最終的に私が見つけようとしているものです。これは可能ですか、それともおそらくこれを行う他の方法がありますか?