У меня есть данные, которые мне нужно передать как Double[]
,
мои данные находятся в double[]
, и мне нужно пройти как Double[]
, потому что мне нужно
изменить его на List<Double>
Вот мой код
Фрагмент списка
@Override
public void OnEditItem(int position) {
Model selectedItem = mModel.get(position);
String selectedKey = selectedItem.getKey();
String selectedImage = selectedItem.getImagesUri();
String selecteDescriptions = selectedItem.getImageDescription();
String selectedImagesName = selectedItem.getImageNames();
List<Double> selectedataSet = selectedItem.getDataSet();
double[] zeroSet = new double[selectedataSet.size()];
for(int i=0; i<zeroSet.length; i++){
zeroSet[i] = selectedataSet.get(i);
}
Log.d(TAG, "thisList: " + datacel);
EditFragment editFragment = new EditFragment();
FragmentTransaction fragmentTransaction =
getActivity().getSupportFragmentManager()
.beginTransaction();
final Bundle bundle = new Bundle();
bundle.putString("Label", selectedKey);
bundle.putString("Image", selectedImage);
bundle.putString("Descriptions", selecteDescriptions);
bundle.putString("ImagesName", selectedImagesName);
И это код, который получает double[]
Редактировать фрагмент
private void updateView(View view) {
if (getArguments()!=null){
String labelId = getArguments().getString("Label");
String imagesBundle = getArguments().getString("Image");
String descriptionsBundle =getArguments().getString("Descriptions");
String imagesNameBundle =getArguments().getString("ImagesName");
double[] dataSet = getArguments().getDoubleArray("DataSet");
//this i where i need to change into Double[];
Log.d(TAG, "thisLIst: " + dataSet);
etName.setText(String.valueOf(imagesNameBundle));
etDescribe.setText(descriptionsBundle);
Picasso.get().load(imagesBundle).into(ImageInput);
simpleActivity.setDataToListView(value, listViewDataSet,context); // this value need Double[];
Отредактировано
я думаю, что моя ошибка начинается отсюда,
double[] zeroSet = new
double[selectedataSet.size()];
for(int i=0; i<zeroSet.length; i++){
zeroSet[i] = selectedataSet.get(i);
}
потому что данные, которые я получил именно так,
как я могу это решить?
Попробуйте что-то вроде этого:
import java.util.Arrays;
class BoxArrayExample {
public static void main(String[] args) {
double[] arr = new double[] {1.0, 2.0, 3.0};
System.out.println(String.format("Unboxed array: %s", Arrays.toString(arr)));
Double[] boxedArr = Arrays.stream(arr)
.boxed()
.toArray(Double[]::new);
System.out.println(String.format("Boxed array: %s", Arrays.toString(boxedArr)));
}
}
Выход:
Unboxed array: [1.0, 2.0, 3.0]
Boxed array: [1.0, 2.0, 3.0]
Это совсем не сложно. Вам просто нужно скопировать элементы массива самостоятельно, например
double[] dataSet = getArguments().getDoubleArray("DataSet");
Double[] boxedDataSet = new Double[dataSet.length];
for ( int i = 0; i < dataSet.length; i++ ) {
boxedDataSet[i] = dataSet[i]; // Invokes auto-boxing
// Equivalent, more explicit alternative:
// boxedDataSet[i] = Double.valueOf(dataSet[i]);
}
спасибо JimmyB :'D, я думаю, что хочу плакать, потому что ваш метод работает, даже если я пытаюсь решить эту проблему в течение 1 недели, действительно спасибо JimmyB
это не работает в студии Android, это дает мне фатальную главную ошибку и ошибку, начиная с потока и заканчивая Double[]::new