안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요,
ListView에서 폴더를 선택하면, 폴더내의 이미지 파일들을 gridView를 통해 보는 프로그램을 만들어 보았습니다.
그런데 파일이 200개정도(총용량 60MB 정도) 되는 폴더를 선택하면, 문제가 발생했다면서 강제종료 되더군요.
GridView에서 너무 많이 불러오려다 보니 나오는 에러라고 추측하는데요 맞나요? 해결방법이 있을까요?
GridView쪽 소스코드입니다.
ListView에서 폴더를 선택하면, 폴더내의 이미지 파일들을 gridView를 통해 보는 프로그램을 만들어 보았습니다.
그런데 파일이 200개정도(총용량 60MB 정도) 되는 폴더를 선택하면, 문제가 발생했다면서 강제종료 되더군요.
GridView에서 너무 많이 불러오려다 보니 나오는 에러라고 추측하는데요 맞나요? 해결방법이 있을까요?
GridView쪽 소스코드입니다.
public class imgGrid extends Activity {
private ArrayList<Uri> imgCurrentList;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
imgCurrentList = (ArrayList<Uri>) getIntent().getExtras().get("imgCurrentList");
setContentView(R.layout.main);
GridView selectedImages = (GridView) findViewById(R.id.GridView01);
selectedImages.setAdapter(new ImageAdapter(this));
}
private class ImageAdapter extends BaseAdapter {
private Context context;
public ImageAdapter(Context localContext) {
context = localContext;
}
public int getCount() {
return imgCurrentList.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView picturesView;
if (convertView == null) {
picturesView = new ImageView(context);
picturesView.setImageURI(imgCurrentList.get(position));
picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER);
picturesView.setPadding(8, 8, 8, 8);
picturesView
.setLayoutParams(new GridView.LayoutParams(100, 100));
} else {
picturesView = (ImageView) convertView;
}
return picturesView;
}
}
}



정확한건 로그를 봐야 알겠지만
이미지 지정하실 때 그냥 uri값을 넣으시는군요.
이미지가 클 경우에는 분명 문제가 될 수 있겠습니다.
이미지를 리사이징 하시거나 썸네일을 뿌리는 방식으로 수정하셔야 겠네요.
(검색해보시면 많이 나올겁니다.)
37번 라인(이미지 지정하는 부분)은 if else문 밖으로 나와야 되지 않을까요?