ViewPager로 처음 호출하면서 이미지를 불러오는 작업을 하고 있습니다


근데 좌우로 넘기고 다시 이미지있는 뷰로 돌아오면 다시받아오느라 시간이 걸리네요...


이미지 받아올때는 AsyncTask를 이용해서 외부url을 통해 bitmap형식으로 변환시켜 뿌려주는 방식입니다..


되돌아오면 다시 받는게 AsyncTask 때문인지...아니면 getView에서 재활용(?)시켜서 그런건지...이해가 안갑니다...


소스를 봐주시고 해결방법좀 알려주시면 감사드리겠습니다...(__)


짧은 댓글 하나에도 소중이 받겠습니다...



@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);


mPos = getArguments() != null ? getArguments().getInt("position") : 0;

}


@Override

public void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

}


@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


imageLoader = new ImageLoader(TestFragment.this.getActivity());


fade = AnimationUtils.loadAnimation(getActivity(), R.anim.fade);


vi = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);


// 각각의 페이지마다 다른 뷰를 호출합니다...

(1,2번 페이지에서만 AsyncTask 를 통해서 이미지를 적용시킵니다..

if(mPos == 0){

v = inflater.inflate(R.layout.category_list, null, false);


....



}else if(mPos == 1){

v = inflater.inflate(R.layout.array_button, null, false);

....


new ATask().execute("1", "1", "1");


}else if(mPos == 2){

v = inflater.inflate(R.layout.array_button, null, false);


...


new ATask().execute("2", "2", "2");


}else if(mPos == 3){

v = inflater.inflate(R.layout.category_list, null, false);


...


}


return v;

}


// List 목록 받아오기

class ATask extends AsyncTask<String, String, String>{


@Override // 작업이 시작하기 전에 호출 되는 Callback

protected void onPreExecute(){

super.onPreExecute();

pd = new ProgressDialog(getActivity());  

pd.setCancelable(false);

pd.setMax(100);

pd.setMessage(Html.fromHtml("목록을 불러오는 중입니다"));

pd.show();

}


@Override // 내부에서 하는 작업

protected String doInBackground(String... arg0) {

URL url_ = null;

String result = null;

String readLine = null;


BitmapFactory.Options options = new BitmapFactory.Options();

options.inSampleSize = 2;


try {

if(arg0[0].toString().equals("1")){

state = "1";

url_ = new URL("...); // 해당 url을 받아서 bitmap 으로이미지화 시킵니다

StringBuffer sb = new StringBuffer();

...


}

} catch (MalformedURLException e) {

e.printStackTrace();

}

return result;

}


@Override // 작업이 끝난 후 호출 되는 Callback

protected void onPostExecute(String result){


if(state.toString().equals("1")){


imageLoader.DisplayImage(path1.get(0), game_iv1);

...

imageLoader.DisplayImage(path1.get(13), game_iv14);


}else if(state.toString().equals("2")){


imageLoader.DisplayImage(path2.get(0), game_iv1);

...

imageLoader.DisplayImage(path2.get(13), game_iv14);

}


super.onPostExecute(result);

}


@Override // 취소할때 호출되는 Callback

protected void onCancelled(){

super.onCancelled();

}

}


private class ListAdapter extends ArrayAdapter<CustomClass> {

private ArrayList<CustomClass> items;

Context con;


public ListAdapter(Context con, int textViewResourceId, ArrayList<CustomClass> items) {

super(con, textViewResourceId, items);

this.con = con;

this.items = items;

}


class ViewHolder{

LinearLayout ll;

ImageView iv;

TextView tv1;

TextView tv2;

TextView good_tv;

TextView down_count_tv;


TextView category;

}

public View getView(final int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;


if(convertView == null){

holder = new ViewHolder();

LayoutInflater vi = (LayoutInflater)con.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView = vi.inflate(R.layout.list_adapter, null);

convertView.setTag(holder);

}else{

holder = (ViewHolder) convertView.getTag(); 

}


CustomClass p = items.get(position);


holder.category = (TextView)convertView.findViewById(R.id.category);

holder.category.setVisibility(View.VISIBLE);

holder.category.setTextSize(18);

holder.category.setTextColor(Color.WHITE);

holder.category.setText(Html.fromHtml(p.getSubject()));


// 쓰지않는 View

holder.ll = (LinearLayout)convertView.findViewById(R.id.ll);

holder.iv = (ImageView)convertView.findViewById(R.id.iv);

holder.tv1 = (TextView)convertView.findViewById(R.id.tv1);

holder.tv2 = (TextView)convertView.findViewById(R.id.tv2);

holder.good_tv = (TextView)convertView.findViewById(R.id.good_tv);

holder.down_count_tv = (TextView)convertView.findViewById(R.id.down_count_tv);


holder.ll.setVisibility(View.GONE); holder.iv.setVisibility(View.GONE);

holder.tv1.setVisibility(View.GONE); holder.tv2.setVisibility(View.GONE);

holder.good_tv.setVisibility(View.GONE); holder.down_count_tv.setVisibility(View.GONE);


return convertView;

}

}