package de.tablayoutexample;
import java.util.List;
import android.os.AsyncTask;
import android.util.Log;
public class CallWebServiceTask extends AsyncTask<String, String, String> {
private PhotosActivity theActivity;
public CallWebServiceTask(PhotosActivity theActivity){
this.setTheActivity(theActivity);
}
@Override
protected void onPreExecute(){
PhotosActivity.showSpinner();
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
return PhotosActivity.getEventList();
}
@Override
protected void onPostExecute(String result) {
List<SingleEvent> thelist = PhotosActivity.parseJSONResponse(result);
/*for(int i=0;i<thelist.size();i++){
SingleEvent entry = thelist.get(i);
Log.v("Finished", entry.getTitle());
}*/
theActivity.refreshListView(thelist);
PhotosActivity.hideSpinner();
}
public PhotosActivity getTheActivity() {
return theActivity;
}
public void setTheActivity(PhotosActivity theActivity) {
this.theActivity = theActivity;
}
}
에 사용할 수있는 AsyncTask를 클래스를 생성하지만, 그 위의 클래스가 필요한 모든 방법을 포함 내 PhotosActivity 클래스와 함께 작동 쓰기 결국 그 호출됩니다. 그러나 모든 활동에 사용할 수있는 asynctask 클래스를 만들고 싶다면 어떻게해야할까요? 내가 어떻게 그럴 수 있니? 나는 모든 PhotosActivity 유형을 "Activity"로 변경하려고 시도했지만 그게 전부 인 것처럼 보입니다.내가 뭐하는 거지 완전히 확실하지 않다 모든 활동
제 질문은이 클래스를 어떻게 동적으로 만들 수 있습니까?
편집 :
package de.tablayoutexample;
import android.app.Activity;
import android.os.AsyncTask;
import android.util.Log;
public class CustomActivity extends Activity{
public String getEventList() {
// TODO Auto-generated method stub
return null;
}
public Object parseJSONResponse(String result) {
// TODO Auto-generated method stub
return null;
}
public void showSpinner() {
// TODO Auto-generated method stub
}
public void refreshListView(Object thelist) {
// TODO Auto-generated method stub
}
public void hideSpinner() {
// TODO Auto-generated method stub
}
public class CallWebServiceTask extends AsyncTask<String, String, String> {
private CustomActivity theActivity;
public CallWebServiceTask(CustomActivity theActivity){
this.setTheActivity(theActivity);
}
@Override
protected void onPreExecute(){
theActivity.showSpinner();
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
Log.i("ADASD","EXECUTED");
return theActivity.getEventList();
}
@Override
protected void onPostExecute(String result) {
Object thelist = theActivity.parseJSONResponse(result);
theActivity.refreshListView(thelist);
theActivity.hideSpinner();
}
public CustomActivity getTheActivity() {
return theActivity;
}
public void setTheActivity(CustomActivity theActivity) {
this.theActivity = theActivity;
}
}
}
그래서 모든 것이 parseJSONResponse 방법을 제외하고 제대로 작동하는 반환 형식은 모든 활동에 대한 다를 수 있기 때문에 :
여기은 내부 AsyncTask를 클래스를 포함 내 CustomActivity의 기본 클래스입니다
예를 들어, 내 PhotosActivity는 gson이 나를 위해 만들어주는 내 SingleEvent 개체의 List를 반환합니다.
public List<SingleEvent> parseJSONResponse(String jsonResponse) {
//using gson, place all the json into the SingleEvent object and then into a List
Type listType = new TypeToken<List<SingleEvent>>(){}.getType();
List<SingleEvent> events = new Gson().fromJson(jsonResponse, listType);
return events;
}
문제는 다음 활동이 내 값을 저장하는 데 다른 개체를 사용한다는 것입니다. 다른 객체 유형을 다루는 방법을 모르겠습니다.