{
"1.png","2.png","3.png","4.png","5.png",
"6.png","7.png","8.png","9.png","10.png",
"11.png","l2.png","13.png","14.png","15.png",
"16.png","17.png","18.png","19.png","20.png",
"21.png","22.png","23.png","24.png","25.png",
"26.png","27.png","28.png","29.png","30.png"
};
int imageFileCnt = 0; //다운로드 받아야하는 이미지 파일 개수
int imgPos = 0; //현재 보여주는 이미지 번호
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mContext = this;
imageFileCnt = fileNames.length;
mImage = (ImageView)findViewById(R.id.iv_image);
Button bt_next = (Button)findViewById(R.id.bt_next);
Button bt_all_delete = (Button)findViewById(R.id.bt_all_delete);
//처음에 한번은 일단 보여주고 시작
setImageBitmap(fileNames[imgPos++]);
//다음 버튼을 눌렀을때
bt_next.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
setImageBitmap(fileNames[imgPos++]);
if(imageFileCnt <= imgPos){
imgPos = 0;
}
}
--------------------------------
안녕하세요. 위에있는 예제는 지금 진행중인 프로젝트의 일부입니다.
다름이아니라 위의 예제에서 질문이 있습니다.
1. String[] fileNames 를 보시면 총 30개의 객체가 구조체 내에 있습니다. 그런데 이게 30개 한정적이라
30개의 객체밖에 저장을 하지 못하고 있습니다. imageFileCnt = fileNames.length의 부분을 보시면
FileCnt는 fileNames의 구조체 크기만큼인 30개로 한정이 되어있는데 이 어플의 기능은
bt_next.setOnClickListener의 부분처럼 next 버튼을 누르면 URL로 불러온 이미지가 setImageBitmap
함수에 의해서 이미지뷰로 그림을 출력하고 그 출력되는 이미지는 fileNames의 imgPos++번의 이미지가 출력되고 저장이 됩니다.
즉, 첫번째 불러온 이미지는 1.PNG로 두번째는 2.PNG로 말이지요.
그 후에는
if(imageFileCnt <= imgPos){
imgPos = 0;
}
루틴에 의해서 이미지의 수를 확인하고 이미지의 현재 출력 번호가(imgPos) 이미지의 총 갯수(FileCnt)를
넘으면 현재 출력하는 이미지의 번호를 나타내는 변수인 imgPos를 0으로 만들어 다시 1번부터
여태 저장된 30개의 이미지를 처음부터 반복해서 출력합니다. (또 pos의 값이 30이 되면 다시 처음부터 반복되죠)
그런데 이 한정된 저장의 갯수를 없에고 싶습니다. 다음을 눌러도 누른만큼 100개 또는 그 이상의
숫자의 객체를 저장하고 반복되는 것이 아닌 계속해서 저장하는 화면을 출력했으면 합니다.
물론 string[]의 객체수를 계속 수작업으로 늘려 놓으면 가능합니다. 하지만 그래서는 유지보수가 안되서요..
어떻게 해야할지 ++로 써보고 새로 객체를 생성해서 크기를 무한대로 늘려보고..
여러 수를 써보았지만 빈번하게 물리 오류 발생으로 어플이 실행이 안되네요..
부탁드립니다. 도와주세요 ㅠ
유지보수를 편하게 하시려면 이미지 URL들을 서버 혹은 자체 xml로 들고 있으시고 서버에 있다면 파싱을 받아서 arrayList에 넣으시면 되고 자체 xml은 getResouce로 String []로 만드셔서 쓰셔도 되겠죠
arrayList는 String Integer등을 사용할 수도 있는데 일반 class에 각종 변수를 선언하셔서 (ex. string url이라던지) 쓰셔도 되겠죠
배열 자체는 초기에 생성시켜놓고 next시에 arrayList 사이즈를 체크하셔서 하시면 되죠. 이때 불러올 arrayList의 객체가 arrayList의 사이즈보다 크거나 같으면 index 에러가 발생하면서 익셉션이 나오겠죠 이건 일반 array도 마찬가지구요
ArrayList 를 사용하세요.
리스트를 늘려야할때 add 를 하면 되죠 ^^;