2015-01-01 4 views
0

저는 앱을 개발 중이며 다음과 같은 문제가 있습니다. 내 서버에서 데이터를 다운로드하고 data1, data2, data3; ...arrayList <MyClass> 값을 저장하지 않습니다

분리 함수를 사용하여 모든 것을 문자열로 묶은 다음 gettet과 setter를 사용하여 매개 변수화 된 클래스의 클래스를 추가하십시오. 마지막으로 나는 모든 객체를 추가하는 ArrayList <> 내 클래스를 만듭니다.

문제는 내가 ArrayList <을 utlizo 할 때> 내 클래스의 asistencia 필드가 0으로 초기화되고 실제 데이터를 복사하지 않는다는 것입니다.

코드를 입력하고 cat을 입력하십시오.

시간과 도움에 감사드립니다.

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 

당신이 보는 경우가의 목적을두고 :

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>(); 
    ... 

의 클래스와 로그 고양이의 전역 변수입니다 id 7 4 6 3이 asistencia 1을 가졌지 만 ArrayList를 이동할 때> id가 7 인 경우 asistencia가 1 인 경우

+0

나에게 디버깅 문제와 같은 느낌이 들고 MCVE가 아니기 때문에 실제로 읽는 것이 어렵습니다. –

+0

나는이 문제가이'if (servAux.getId() == serviciosSi.get (j))'에 있다고 생각하지만 실제로 serviciosSi의 코드를 제공해야한다! –

+0

'if (servAux.getId() == serviciosSi.get (j))'블록에 'break' 문을 추가하여 mathing id를 찾았다면'for' 루프를 종료하십시오. – Tom

답변

1

문제는 프로그램의 순서입니다. 이는 if 문에서 호출하지 않기 때문에 루프의 마지막 반복에서, 그것은 다른 경로로 오는 경우

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); 

가 그래서, asistencia 0으로 설정됩니다, 로그 문에 무슨 일이 일어날하지 않습니다 루프 후에.

관련 문제