java - arrayList<MyClass> 不保存值

标签 java android arraylist

我正在开发一个应用程序并遇到以下问题。 从我的服务器下载数据,并以 data1、data2、data3 形式的字符串出现; ...

使用 split 函数,我将其分开,并将所有内容放入字符串 [] 中,然后使用参数化类的 gettet 和 setter 添加该类的对象。最后我创建了一个 ArrayList <> 我的类,你添加所有对象。

问题是,当我使用 ArrayList <> 时,我的类字段的 asistencia 被初始化为 0,并且它没有复制实际数据。

我把代码和日志猫。

感谢您的时间和帮助。

result = convertInputStreamToString(inputStream);

String[] aux1 = result.split(":");  

for (int i =0; i< aux1.length; i++)
{
        Servicio servAux = new Servicio();
        String[] aux = aux1[i].split(";");  

        servAux.setTipo(Integer.parseInt(aux[0]));
        servAux.setNombre(aux[1]);
        servAux.setDescripcion(aux[2]);
        servAux.setHora(aux[3]);
        servAux.setMinuto(aux[4]);
        servAux.setLugar(aux[5]);
        servAux.setDuracion(aux[6]);
        servAux.setFecha(aux[7]);
        servAux.setHoraCero(aux[8]);
        servAux.setId(Integer.parseInt(aux[9]));
        for (int j=0; j<serviciosSi.size();j++)
        {
                if (servAux.getId() == serviciosSi.get(j))
                {
                    servAux.setAsistencia(1);
                    Log.i("result","en servicio: "+servAux.getId()+" pongo asistencia: "+servAux.getAsistencia());
                }

                else
                    servAux.setAsistencia(0);
        }
        listaServicios.add(servAux);
}
for(int j =0; j<listaServicios.size();j++)
{
         Log.i("result","listaServicios-> id: "+listaServicios.get(j).getId()+"  asist: "+listaServicios.get(j).getAsistencia());
}

我把ArrayList的声明,是acitivty类的全局变量

public class Inicio extends Activity 
{
    ArrayList<Servicio> listaServicios = new ArrayList<Servicio>();
    ...

还有日志猫:

en servicio: 7 pongo asistencia: 1
en servicio: 4 pongo asistencia: 1
en servicio: 3 pongo asistencia: 1
en servicio: 6 pongo asistencia: 1
listaServicios-> id: 7  asist: 1
listaServicios-> id: 1  asist: 0
listaServicios-> id: 4  asist: 0
listaServicios-> id: 3  asist: 0
listaServicios-> id: 6  asist: 0
listaServicios-> id: 5  asist: 0
listaServicios-> id: 2  asist: 0
listaServicios-> id: 0  asist: 0
listaServicios-> id: 8  asist: 0

如果您查看将 id 7 4 6 3 具有 asistencia 1 的参数化类的对象,但是当一个人遍历 ArrayList <> id 时,只有 7 个具有 asistencia 1

最佳答案

问题是你的程序的顺序。

for (int j=0; j<serviciosSi.size();j++)
    {
            if (servAux.getId() == serviciosSi.get(j))
            {
                servAux.setAsistencia(1);
                Log.i("result","en servicio: "+servAux.getId()+" pongo asistencia: "+servAux.getAsistencia());
            }

            else
                servAux.setAsistencia(0);
    }
    listaServicios.add(servAux);

因此,如果在循环的最后一次迭代中,它进入 else 路径,asistencia 将被设置为 0,日志语句中不会发生这种情况,因为这是在 if 语句中调用的,而不是在循环之后调用的。

关于java - arrayList<MyClass> 不保存值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27734787/

相关文章:

java - ArrayList 未正确填充

java - Project Euler #7 Java 代码不工作

java - 在 ArrayList 中搜索字符串;总是返回 false

java - 为什么我无法对这个 ArrayList 进行排序?

java - 忽略模式的字符串拆分正则表达式

java - Tomcat 在 CentO 上不起作用 - ExecStop=/bin/kill -15 $MAINPID (code=exited, status=1/FAILURE)

android - 通过 Cygwin 在 Windows 上为 x86 Android 构建 Android NDK 工具链

android - 在 Google Play 服务排行榜上隐藏虚假分数

android - 如何创建由少数应用程序共享的 sharedpref?

C#如何判断ArrayList是否包含具有特定属性的对象