안녕하세요.
버튼 2개에 온클릭을 주고 갤러리를 좌우로 하나씩 이동 하려고 합니다.
아래와 같이 오른쪽으로 하나씩 이동을 하려고 하는데요.
갤러리가 4개 이상인데도 이상하게 4번째 이미지에서 널포인트가 나옵니다.
int idx = gallery.getSelectedItemPosition();
if (D) Log.i(TAG, "idx : [" + gallery.getCount() + ", " + idx + "]");
if ((gallery.getCount()-1) > idx){
idx++;
if (D) Log.i(TAG, "idx : [" + idx + "]");
View nextView = gallery.getChildAt(idx); <<<< idx가 3인경우 아래에서 널포인트 발생.
int x = nextView.getLeft()+nextView.getWidth()/2;
int y = nextView.getTop()+nextView.getHeight()/2;
MotionEvent event = MotionEvent.obtain(100, 100, MotionEvent.ACTION_DOWN, x, y, 0);
gallery.onDown(event);
boolean res = gallery.onSingleTapUp(null);
}else{
if (D) Log.i(TAG, "selected end");
}
소스는 아무리 봐도 이상이 없는것 같은데 왜 그런지..
조언 부탁드립니다.
give & take
저임ㅋ님 답변 감사합니다.
갤러리에서 보여지는 기본 형태는 아래처럼 3개씩 보여지는데 좌우로 이전, 다음 이미지가 조금씩 보여집니다.
[0] [1
0] [1] [2
1] [2] [3
2] [3] [4 <<<<<<<<<<< 이곳에서 널포인트가 나옵니다.
3] [4]
해결 했습니다.(URL : http://susemi99.tistory.com/1103)
View nextView = gallery.getChildAt(idx - gallery.getFirstVisiblePosition());
이렇게 하니 오류없이 원하는대로 되었습니다.
확장 컴포넌트 codehighlighter 써주시면 좋을텐데..
잘은 모르겠지만 혹시 1번을 보여줄때 다음 2번도 보여준다거나 그런건 아닌가요?
idx = 0일 때
[ 0 ][2
idx = 1일 때
[ 1 ][2
...
idx = 3일 때
[ 3 ][null
이런식이 아닐까 예측해봅니다.