마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 ArrayList 관련 질문이 있습니다ㅠㅠ

0 추천
질문이 있습니다ㅠㅠ
안드로이드 스튜디오에서 앱을 개발할 때
ArrayList에 들어가있는 값 중
최대 10개까지만 값을 받아오려고 할때

for(int k=0; k<Define.ABC.size();k++){
    final HistoryObject ho = Define.ABC.get(k);
    if(sendToServer(ho,k)){
        cnt++;
    }
}

이 소스를 어떻게 바꿔야할까요??
조건을 k<10으로도 해봤는데 sendToServer 함수에서 팅겨버리더라구요..
혹시 알려주실수있는 분 있을까요?ㅠㅠㅠ
김수지 님이 2016년 4월 21일 질문
아 그리고 소스가 위의 소스는 왜 리스트의 총 수를 반으로 나눈 반올림 값이 들어가는지 궁금합니다ㅠㅠ

1개의 답변

0 추천

k<10 이렇게 하면 되고. 

아마 예측하자면 리스트를 잘못담아오신거 같네요. 

보통 총수를 반으로 나눈 반올림 값으로 들어오지 않아요.

chemkaaa (6,030 포인트) 님이 2016년 4월 21일 답변
앱 화면에는 총 13개의 리스트가 출력이 된다고 했을 때
그 중 7개의 리스트가 서버로 업로드되고 나머지는 남아있는데
이걸 10개까지 제한을 두려고 k<10을 했을 때는 앱이 7개를 넘어가는 순간
다운됩니다. 그래서 그냥 반으로 나눈 값이 10을 넘었을때 for문이 break 되는 식으로 했습니다만 일시방편이라ㅠㅠ

답변감사드립니다!
Define.ABC.size() 가 7인거 같은데요.
그럼 for 문돌리면 사이즈 7번 돌고
10개로 지정해 두면
final HistoryObject ho = Define.ABC.get(k);
이곳에서 아웃오브인덱스? 뭐 이런식을 범위 초과했다고
다운되는거 같은데요.

이런걸 원하신건가요.

int nMax = Define.ABC.size() < 10 ? Define.ABC.size()  : 10;

for(int k=0; k<nMax ;k++){
    final HistoryObject ho = Define.ABC.get(k);
    if(sendToServer(ho,k)){
        cnt++;
    }
}
...