2016-10-10 4 views
-3

은 내가 variabletaskArray라는 이름의 생성이나는 내 ArrayList의에 추가 할 수 없습니다 [안드로이드] 내 수업에서

public class ActivityOne extends Activity { 
ArrayList<WorkTask> taskArray = null; 

@Override 
protected void onCreate(Bundle savedState) { 
    taskArray = new ArrayList<WorkTask>(); 

    final GetTasks getTasks = new GetTasks(); 
     getTasks.execute(); 

     Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() 
     { 
      @Override 
      public void run() { 
       if (getTasks.getStatus() == AsyncTask.Status.RUNNING) { 
        getTasks.cancel(true); 
        Toast.makeText(ActivityOne.this, "Connection Timeout", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }, 60000); 
} 

처럼 내 onCreate에 초기화 그리고 나의 AsyncTaskdoInBackground에서 내가의 데이터를 추가 해요에서 branchesArray하지만 추가하지 않습니다. 그것이 올바르게 작동하기 전에,하지만 지금은 그렇지 않습니다. 이

public final class GetTasks extends AsyncTask<Void, Void, Employee> { 
    protected Employee doInBackground(Void... params) { 

    try 
     { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpGet httpget = new HttpGet(URL_STRING); 
      HttpResponse response = httpclient.execute(httpget); 
      str = EntityUtils.toString(response.getEntity()); 
     } 
     catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 



     try{ 
      JSONObject jsonObject = new JSONObject(str); 
      JSONObject data = jsonObject.getJSONObject("DATA"); 

      //Employee info 
      empObj = new Employee(); 

      empObj.setId(data.getInt("id")); 
      empObj.setName(data.getString("name").toString()); 

      JSONArray jArray = data.getJSONArray("worktask"); 

      for (int i = 0, count = jArray.length(); i < count; i++) { 
       JSONObject jObj = jArray.getJSONObject(i); 

       WorkTask workTask = new WorkTask(); 

       workTask.setId(jObj.getInt("id")); 
       workTask.setTaskName(jObj.getInt("task_name")); 

       taskArray.add(workTask); 
      } 

     }catch (JSONException e){ 
      e.printStackTrace(); 
      return null; 
     } 

     return empObj; 
    } 

가 여기 내 모델 WorkTask

public class WorkTask implements Serializable { 
private int id; 
private String taskName; 

    public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public int getTaskName() { 
    return taskName; 
} 

public void setTaskName(int taskName) { 
    this.taskName = taskName; 
} 
+0

올바르게 작동하지 않는 이유는 코드가 잘못되었다는 것입니다. 코드에 어떤 문제가 있는지에 대한 자세한 정보가 필요하면 어떻게 작동하지 않는지에 대한 구체적인 정보를 제공하십시오. – ajb

+0

@ajb 코드를 업데이트했습니다. 그것을 디버깅 할 때,'taskArray.add()'에 가지 않는다. – natsumiyu

답변

0

내가 여기 바보 같은 실수를 저질렀다. 나의 다른 값은 jObj 인 데이터가 empObj인데, 그 이유는 항상 catch입니다. 나는 이미 그것을 고치고 정확하게 일하고있다.

0

난 당신이 코드에 대한 자세한 정보를 기록 생각처럼 내 코드 보인다.

count이 0 일 수 있습니다. 이는 jArray이 빈 목록임을 의미합니다.

프리스트, json 데이터를 worktask에 대해 확인하십시오.

+0

내'jArray'를 검사하면 배열이 3 개있다. 데이터가 있지만'ArrayList' – natsumiyu

+0

@mori를 추가하지 않으므로'AsyncTask'를 실행하지 않습니까? 'jArray'에 데이터가 있고 그 연산을 실행하면,'taskArray'는 원소를 가져야합니다. – NEWBIE

+0

나는 그것을 실행한다. 업데이트 된 코드를 확인하십시오. – natsumiyu

관련 문제