Android 개발 메모
ViewPager 사용 시 ArrayList 데이터 전달
Dexx
2015. 10. 9. 02:36
ViewPager를 이용하여 갤러리를 만드는데 개발 초짜로서 여간 문제가 많은게 아니었다.
특히나 View마다 각각 다른 데이터를 노출하고 싶은데 검색을 통해 알아낸 방법으로는 position값만 전달이 가능했던 것.
일단 내가 처음으로 이용한 방법은 List<Photo>로 배열을 만들어 넘기는 것이었으나 어찌된 것인지 List에서는 position값을 가져오지 못하는 문제가 발생했다.
이에 String으로 ArrayList를 다시 만들어 position값을 전달하도록 변경하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public ArrayList<String> selectAllPhotoString() { ArrayList<String> photoList = new ArrayList<String>(); String selectAllQuery = "SELECT * FROM " + TABLE_PHOTO; SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(selectAllQuery, null); if (cursor.moveToFirst()) do { photoList.add( cursor.getString(1) ); } while (cursor.moveToNext()); cursor.close(); db.close(); return photoList; } |
그런데 워낙 개발초짜이다 보니 내가 알아낸 방법으로는 ArrayList로 만든 배열에는 한가지 데이터밖에 만들 수 없었다.
어쨌든 이렇게 포지션 값을 가져왔지만 그외의 데이터를 전달하는 방법을 도무지 알수 없는 상황.
그런데 Adapter부분에서 instantiateItem부분이 딱!! 보임
1 2 3 4 | @Override public Object instantiateItem(ViewGroup container, int position) { return super.instantiateItem(container, position); } | cs |
ViewGroup과 position이 있는 것을 보니 뭔가 값을 전달할 수 있을 거 같아 무작정 전달하고 싶은 데이터를 넣어 보았더니..... 잘 된다 ㅋㅋㅋ
1 2 3 4 5 6 7 8 9 10 11 | @Override public Object instantiateItem(ViewGroup container, int position) { try { photoInfo = photoList.get(position); categoryInfo = categoryList.get(Integer.parseInt(photoInfo.getCategoryId())-1); } catch (Exception e) { } return super.instantiateItem(container, position); } | cs |