2012-01-03 26 views
1

私は1つのボタンとlistviewを含むアクティビティを持っていました。リストビューにはwebserviceの値が含まれています。このリストビュー項目をクリックすると、1つのアクティビティに複数のasynctaskクラスがあります

ですから、1つのアクティビティで4つのasynctask内部クラスを使用できますか。 つまり、リストビューでコンテンツを最初に読み込むためのもの、リストの各項目をクリックすると2番目に呼び出されます。リストビューの次のページに移動すると3番目に表示されます(リストビューには10個の項目しか表示されません)ボタン。

これは正しい方法ですか?

+0

それぞれに重いタスクを実行する必要がありますか?なぜなら、あなたはすべてのWebサービスからデータを取得しなければ、それらを減らすからです。最初のAsyncTaskのすべてをキャッシュして、アプリケーションをナビゲートするときにデータをロードしてみてください。 – WarrenFaith

+0

4つすべてが異なるWebサービス呼び出しを使用します。 –

+0

それから私は4つのタスクを持つことが大丈夫だと思います。自分のアクティビティからのみアクセスする場合は、内部クラスのみにする必要があります。 – WarrenFaith

答えて

3

はい、その権利。あなたは何度も電話したいと思っています。しかし、小さな変更を行うことができます呼び出し4 AsyncTask、あなたのジェネリックを流して、1つのAsyncTaskを行うことができます。 uはウルサーバーとやり取りするときに、これまで
`

public class GetDataFromNetwork extends AsyncTask<Void,String,Object> {private String ipAddress; 
private String webService; 
private String nameSpace; 
private String methodName; 
private Context context; 
private ProgressDialog progressDialog; 
private SoapObject request; 
private GetDataCallBack callBack; 


/** 
* Set default progress Bar properties. Internal function called from setConfig 
* 
* @param progressBarStyle : Progress Dialog style (spinner or horizontal) 
* @param message : Message to be displayed on progressBar 
*/ 
protected void setProgresDialogProperties(int progressBarStyle, 
     String message) { 
    progressDialog = new ProgressDialog(context); 
    progressDialog.setProgress(0); 
    progressDialog.setMax(100); 
    progressDialog.setProgressStyle(progressBarStyle); 
    progressDialog.setMessage(message); 
} 


public GetDataFromNetwork(Context context,int progressBarStyle,String message ,GetDataCallBack callBack) { 
    this.callBack=callBack; 
    this.context=context; 
    setProgresDialogProperties(progressBarStyle, message); 
} 

/** 
* Used for setting up the location and config of remote location/webservice 
* @param ipAddress : IP of webservice 
* @param webService : Name of webservice 
* @param nameSpace : NameSpace of webService 
* @param methodName :Name of function of the particular webservice 
*/ 
public void setConfig(String ipAddress,String webService,String nameSpace,String methodName){ 
    this.ipAddress=ipAddress; 
    this.webService=webService; 
    this.nameSpace=nameSpace; 
    this.methodName=methodName; 

} 


/** 
* Set parameter in SoapObject 
* @param requestParamater : Map of request 
*/ 
@SuppressWarnings("rawtypes") 
public void sendData(HashMap<String, Object> requestParamater) { 
    } 
} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    progressDialog.show(); 
} 
@Override 
protected Object doInBackground(Void... params) { 
    return result; 
} 
    @Override 
protected void onPostExecute(Object result) { 
    super.onPostExecute(result); 
    progressDialog.dismiss(); 
}` 

今uがこのクラスを呼び出すことができます。

+0

@ Mohit "呼び出し4 AsyncTaskのinstend、あなたは何を意味するかを取得することはできません。 –

+0

AsyncTaskをこのようにして再利用することができます。編集した回答を確認してください。アイデアが得られることを願っています。 –

+0

コード内でprogressDialog.dismiss()はどこで使用できますか? –

関連する問題