如何从片段到片段解析捆绑包中的 List<doube>?
How to parse List<doube> in bundle from fragment to fragment?
我想从片段A解析数据到片段B,但唯一的问题是,我要解析的数据是一个列表。
这是一些代码
@Override
public void OnEditItem(int position) {
simpleActivity.toastMessage(context, "Edit Image : "+ position);
Model selectedItem = mModel.get(position);
final String selectedKey = selectedItem.getKey();
final String selectedImage = selectedItem.getImagesUri();
final String selecteDescriptions = selectedItem.getImageDescription();
final String selectedImagesName = selectedItem.getImageNames();
final List<Double> selectedDataset = selectedItem.getDataSet();
InputFragment inputFragment = new InputFragment();
Bundle bundle = new Bundle();
bundle.putString("Label", selectedKey);
bundle.putString("Image", selectedImage);
bundle.putString("Descriptions", selecteDescriptions);
bundle.putString("ImagesName", selectedImagesName);
bundle.putParcelableArrayList("DataSet", selectedDataset);//this is where i got an error
inputFragment.setArguments(bundle);
}
我遇到了这样的错误
Wrong 2nd argument type.Found 'java.util.ArrayList<Java.lang.Double>', required :'java.util.ArrayList<? extendes android.os.Parcelable>
我该如何解决这个问题?
你不能制作 Double Parcelable,但你可以创建一个包含你的双人的 class 并在其中实施 Parcelable class:
import android.os.Parcel;
import android.os.Parcelable;
public class MyDouble implements Parcelable {
public double myDouble;
public MyDouble(double d){
myDouble = d;
}
protected MyDouble(Parcel in) {
myDouble = in.readDouble();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeDouble(myDouble);
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<MyDouble> CREATOR = new Creator<MyDouble>() {
@Override
public MyDouble createFromParcel(Parcel in) {
return new MyDouble(in);
}
@Override
public MyDouble[] newArray(int size) {
return new MyDouble[size];
}
};
}
然后你可以像这样使用它:
final List<MyDouble> selectedDataset = selectedItem.getDataSet();
List<MyDouble> myDoubles = new ArrayList<>();
for (Double d :
selectedDataset) {
myDoubles.add(new MyDouble(d));
}
bundle.putParcelableArrayList("DataSet", myDoubles);
或者您可以创建 class 可序列化:
class DoubleWrapper implements Serializable {
double value;
}
我想从片段A解析数据到片段B,但唯一的问题是,我要解析的数据是一个列表。
这是一些代码
@Override
public void OnEditItem(int position) {
simpleActivity.toastMessage(context, "Edit Image : "+ position);
Model selectedItem = mModel.get(position);
final String selectedKey = selectedItem.getKey();
final String selectedImage = selectedItem.getImagesUri();
final String selecteDescriptions = selectedItem.getImageDescription();
final String selectedImagesName = selectedItem.getImageNames();
final List<Double> selectedDataset = selectedItem.getDataSet();
InputFragment inputFragment = new InputFragment();
Bundle bundle = new Bundle();
bundle.putString("Label", selectedKey);
bundle.putString("Image", selectedImage);
bundle.putString("Descriptions", selecteDescriptions);
bundle.putString("ImagesName", selectedImagesName);
bundle.putParcelableArrayList("DataSet", selectedDataset);//this is where i got an error
inputFragment.setArguments(bundle);
}
我遇到了这样的错误
Wrong 2nd argument type.Found 'java.util.ArrayList<Java.lang.Double>', required :'java.util.ArrayList<? extendes android.os.Parcelable>
我该如何解决这个问题?
你不能制作 Double Parcelable,但你可以创建一个包含你的双人的 class 并在其中实施 Parcelable class:
import android.os.Parcel;
import android.os.Parcelable;
public class MyDouble implements Parcelable {
public double myDouble;
public MyDouble(double d){
myDouble = d;
}
protected MyDouble(Parcel in) {
myDouble = in.readDouble();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeDouble(myDouble);
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<MyDouble> CREATOR = new Creator<MyDouble>() {
@Override
public MyDouble createFromParcel(Parcel in) {
return new MyDouble(in);
}
@Override
public MyDouble[] newArray(int size) {
return new MyDouble[size];
}
};
}
然后你可以像这样使用它:
final List<MyDouble> selectedDataset = selectedItem.getDataSet();
List<MyDouble> myDoubles = new ArrayList<>();
for (Double d :
selectedDataset) {
myDoubles.add(new MyDouble(d));
}
bundle.putParcelableArrayList("DataSet", myDoubles);
或者您可以创建 class 可序列化:
class DoubleWrapper implements Serializable {
double value;
}