Jos*_*pez 2 java string android arraylist
我真的不明白为什么会这样.到目前为止,这是我从未遇到过的最奇怪的错误.
问题是我正在使用Retrofit从服务器检索一些信息,为此,我需要创建一个名为的POJO POJO_PATIENTINFO.在这个pojo中,我有一个BigDataset_PatientInfo名为变量的变量data.在这个变量里面,我存储了一个List<Dataset_RegVar>被调用的registro_variable内部,我有这些字符串:
没问题.我的想法是,我想从另一个Fragment.class中恢复这些字符串,这是我认为的简单任务.
这是我执行这么简单任务的代码:
int size = POJOS.getPojo_patientInfo().data.registro_variable.size();
int i = 0;
strVariable = strId = strFecha = strMedida = strDescripcion = strComentarios = new String[size];
for (POJO_PATIENTINFO.Dataset_RegVar dataset : POJOS.getPojo_patientInfo().data.registro_variable) {
strVariable[i] = dataset.registro_var_variable;
strId[i] = dataset.registro_var_id;
strFecha[i] = dataset.registro_var_fecha;
strMedida[i] = dataset.registro_var_medida;
strDescripcion[i] = dataset.registro_var_descripcion;
strComentarios[i] = dataset.registro_var_comentario;
i++;
}
Run Code Online (Sandbox Code Playgroud)
在第一次迭代之后,就在"i ++"之前 line执行时,String数组都存储完全相同的值,即与之相同的值dataset.registro_var_comentario.简而言之,上面的代码就像我写的一样执行:
int size = POJOS.getPojo_patientInfo().data.registro_variable.size();
int i = 0;
strVariable = strId = strFecha = strMedida = strDescripcion = strComentarios = new String[size];
for (POJO_PATIENTINFO.Dataset_RegVar dataset : POJOS.getPojo_patientInfo().data.registro_variable) {
strVariable[i] = dataset.registro_var_comentario;
strId[i] = dataset.registro_var_comentario;
strFecha[i] = dataset.registro_var_comentario;
strMedida[i] = dataset.registro_var_comentario;
strDescripcion[i] = dataset.registro_var_comentario;
strComentarios[i] = dataset.registro_var_comentario;
i++;
}
Run Code Online (Sandbox Code Playgroud)
显然,我想到的第一件事就是所有这些字符串都可能保持相同的值.不,他们不是.我知道这是因为我自己做了一些调试工作.让我粘贴一些结果(注意这些图像适用于i = 3):http://postimg.org/gallery/2gf1lj7qa/
如果您认为有必要,我会提供更多详细信息.谢谢.
您正在为所有这些变量分配一个相同的 String数组.因此,对这些变量中的任何一个的最后一次写入都会覆盖所有其他变量中的相应索引.这恰好就是这个任务:
strComentarios[i] = dataset.registro_var_comentario;
Run Code Online (Sandbox Code Playgroud)
而不是
strVariable = strId = strFecha = strMedida = strDescripcion = strComentarios = new String[size];
Run Code Online (Sandbox Code Playgroud)
你需要写
strVariable = new String[size];
strId = new String[size];
strFecha = new String[size];
strMedida = new String[size];
strDescripcion = new String[size];
strComentarios = new String[size];
Run Code Online (Sandbox Code Playgroud)