2014-06-19 1 views
0

항목 목록에서 선택하는 동안 onItemClick() 구현이 있습니다. 그러나 onItemClick() 내부에서 비동기 인 라이브러리 호출을 통해 검사를 수행해야합니다. 기본적으로 onItemClick() 내에서 XYZ.checkConnection (booleanCallback) 호출; 비동기입니다. 그리고 booleanCallback (int status)에서 상태를 확인할 수 있습니다. 이 시나리오를 처리하기 위해 어떤 패턴을 사용할 수 있습니까? 당신은 내가 본질적으로 당신에게 시작점을 준onItemClick() 내 비동기 호출 처리

모듈 클래스를 원하는 경우

+0

약간의 컨텍스트 플러스 코드는 콜백에서 수행 할 UI 관련 작업입니다. – Droidekas

+0

예, 비동기 호출에서 결과를 얻으면 UI 관련 작업을 수행해야합니다. – user3079275

답변

0
public class Tester extends Activity { 
private ListView list; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    list.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      new CheckConnection(list.getAdapter().getItem(position)) 
        .execute(); 

     } 
    }); 
} 

private class CheckConnection extends AsyncTask<Void, Void, Void> { 
    private Object o; 

    public CheckConnection(Object o) { 
     this.o = o; 
    } 

    @Override 
    protected void onPreExecute() { 
     // Do things like initiate progress bar etc 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     // Do connection check 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     int status = 0; 
     // determine status 
     booleanCallBack(status, o); 
    } 
} 

private void booleanCallBack(int status, Object o) { 
    // perform UI related 
} 
} 

당신이 위임 방식을 사용, 이것은 기반으로 쥐게 될 수있는 당신이하는대로 꼭 일부러 정확히 얻을 당신의 context.hence 일반화 된 답변