2013-05-08 3 views
0

wsdl에서 국가 목록을 얻을 비동기 작업을 설정했으며 그 결과로 여러 국가 개체를 만들고 국가 클래스 파일의 arraylist에 개체를 추가합니다 .입력 또는 출력이없는 Android asynctask

배열 목록을 채우는 비동기 작업을 실행하고 다른보기에서 사용자가 선택한 것을 기반으로 배열 목록의 특정 색인을 호출 할 수 있기를 원합니다.

은 내가 AsyncTask를 확장하는 클래스를 생성 시도와 내가 네트워크 활동이 메인 스레드

The type getWSDL2 must implement the inherited abstract method AsyncTask.doInBackground(Object...) 

에서 실행 될 수 있기 때문에 괜찮 았는데 내가 만든 응용 프로그램의 진저 버전에서 동일한 코드를 삽입 한 전 이 모든 변수 및 물건을 wsdl 데이터를 얻을 수있는 모든 개체가 비동기 작업 내에서 및 모든 데이터를 비동기 작업 내에서 arraylist 할당됩니다 필요가 없습니다. 나는 당신의 질문을 이해 doInBackground

protected void doInBackground(Void... params) 
{ 
    ........ 
} 
+0

를 사용하도록

공용 클래스 getWSDL2은 AsyncTask를 {

protected Void doInBackground(Void... params) { //All I/O code here return null } 

}를 확장

당신은 당신이 작업에있어 구조 할 수 어떻게 가변 인자 매개 변수에 null을 전달하는 방법에 대한? 어느 쪽이든 null을 처리 할 수 ​​있도록 doInBackground() 메서드를 재정의합니다. – nikkatsa

답변

0

패스 무효 ... 당신은 당신이 그것으로 값을 전달할 필요가 없기 때문에 AsyncTask을 구현하는 방법을 확실하지 않다 . 필요한 모든 변수와 데이터는 표시하려는 내용을 다운로드하기 위해 서버와의 트랜잭션을 실행하는 코드에 포함됩니다.

Public 클래스 getWSDL2는 AsyncTask를 {

protected Void doInBackground(Void... params) { 
     //All I/O code here 
    }  

    protected Void onPostExecute(){ 
     //Anything that needs to run on the UI thread here 
    }  

}

AsyncTask의 일반적인 구조는 상기 열거되어 연장된다. doInBackground 메소드에는 입력/출력 기능이 있어야합니다. 즉, 배열 목록에 저장된 쿼리의 결과를 표시하는 뷰는 UI 스레드에서 실행되는 onPostExecute에서 호출해야합니다.

내가 수집 한 것에서 해결책은 간단합니다. 서버 트랜잭션에 필요한 모든 코드를 doInBackground 방법으로 입력하십시오. 해당 트랜잭션의 결과를보기에 표시하려면 return statment를 doInBackground에 추가하고 AsyncTask에 나열된 가변 인수에 반환 할 객체/변수 유형을 포함시킵니다. 예를 들어, 당신은 당신의 doInBackground 방법으로 생성 된 ArrayList의 결과를 표시하려고한다면

당신이 필요하지 않은 경우 getWSDL2는 다른 방법으로는 AsyncTask를 {

protected ArrayList<String> doInBackground(Void... params) { 
     //All I/O code here 
     return nameOfArrayListYouBuild 
    }  

    protected Void onPostExecute(ArrayList<String> whatever){ 
     //use ArraList whatever to display your stuff 
    }  

}

를 확장

공용 클래스 UI 스레드에서 아무 것도 표시하거나 함수를 실행 한 다음 onPostExecute 메서드를 전혀 사용하지 마십시오.그냥 doInBackground

0

방법에 대한 매개 변수로

public class getWSDL2 extends AsyncTask { 

    protected void doInBackground() 
    { 
     ........ 
    }