2012-07-27 2 views
1

AsyncTask를 사용하여 FlipView에 이미지를로드하려고하지만 계속 진행하는 방법을 모르겠습니다. drawable에서로드 할 이미지가 20 개이므로 응용 프로그램을 강제 종료하기 때문에 AsyncTask를 사용해야합니다.AsyncTask에서 ViewFlipper를 채우기

private class asyncImage extends AsyncTask<Void, Void, Void>{ 
     int i; 
     @Override 
     protected Void doInBackground(Void... params) { 
      for (i=0;i<imageID.length;i++){ 
       image = new ImageView(getBaseContext()); 
       image.setId(i); 
       image.setImageResource(imageID[i]); 
       image.setBackgroundDrawable(getResources().getDrawable(R.drawable.border)); 
       image.setScaleType(ImageView.ScaleType.FIT_XY); 
       FlipV.addView(image); 
      } 
      return null; 
     } 

    protected void onPostExecute(Void result){ 

     image.setBackgroundDrawable(getResources().getDrawable(R.drawable.border)); 
     image.setScaleType(ImageView.ScaleType.FIT_XY); 
     for(int x=0;x<imageID.length;x++){ 
      FlipV.addView(???); //How to add images into FlipView? 
     } 
    } 

} 

이미지가 FlipView에 추가되지 않았습니다. 어떤 도움이 필요합니까?

+1

리소스에서 그림을로드하는 경우 asyntstask – silentnuke

+0

을 사용할 필요가 없지만 10 개 이상의 이미지가있는 경우 응용 프로그램이 충돌합니다. 종류의 기억 문제. –

+0

logcat에 무엇이 있습니까? 또는 ANR 오류가 발생합니까? – silentnuke

답변

1

내 의견에서 언급 한 것처럼 이미 이미지 뷰 배열을 사용하여 이미지를 doInBackground에로드하고 postExecute의 viewflipper에 imageviews를 추가하여 내 문제를 해결했습니다. 또한 앱에서 빈 화면 대신 로딩 시간을 표시하는 진행 대화 상자를 추가했습니다. 대답 한 모두에게 감사드립니다.

private class asyncImage extends AsyncTask<Void, Void, Void>{ 
     int i; 
     @Override 
     protected Void doInBackground(Void... params) { 
      for (i=0;i<imageID.length;i++){ 
       image[i] = new ImageView(getBaseContext()); 
       image[i].setImageResource(imageID[i]); 
       image[i].setBackgroundDrawable(getResources().getDrawable(R.drawable.border)); 
       image[i].setScaleType(ImageView.ScaleType.FIT_XY); 
      } 
      return null; 
     } 

     protected void onPostExecute(Void result){ 
      for (int x=0;x<imageID.length;x++){ 
      FlipV.addView(image[x]); 
      } 
      count = 1; 
      progDialog.dismiss(); 
      txItem.setText(Integer.toString(count) + "/" + (imageID.length)); 
     } 
    } 
0

이벤트/UI 스레드에 영향을주는 doInBackground 메서드에 대한 지침을 추가 할 수 없습니다. 대신 publishProgress() 메서드를 사용하여 이벤트 스레드에 알리고 onProgressUpdate()에서 flipview에 뷰를 추가해야합니다.

+0

샘플을 제공해 주시겠습니까? 왜냐하면 나는 asynctask를 동시에 사용하면서 ViewFlipper를 채우기 위해 루프를 사용하는 것을 혼란스러워하기 때문이다. –

관련 문제