2011-10-12 2 views
3

2000 년 저해상도 이미지가 인 sqlite 데이터베이스가 있습니다. 데이터베이스 자체의 크기는 100MB 이상입니다. 프로젝트는 파일 경로 대신 데이터베이스에 사진을 저장하도록 요구합니다.galleryview에 sqlite DB의 이미지를 동적으로 채우는 중

이것은 내가하고 싶은 부분이며, 도움이 필요합니다. 은 처음으로 이미지를 다루는 사람입니다. 가로가로데이터베이스에서 동적으로 가져온 이미지로 채우려는 내 응용 프로그램 UI가 있습니다. 이 이미지가 배경에서 갤러리보기의 에 게으른로드 되어도 상관 없습니다. 나는 어딘가에서 ImageAdapter를 사용하여 이미지를 UI 요소 에 동적으로 바인딩해야한다고 읽었습니다. 나는 이것이 어떻게 행해지는지 이해할 필요가있다. 나는 결코 BaseAdapter 클래스를 사용했습니다.

덕분에, AB

답변

1

당신은 실제로 비트 맵으로 그들을 켜거나 드로어 블 Drawable 후 이미지 뷰에 사진을 설정하고 갤러리에 추가하여 DB에서 이미지를 끌어 어댑터를 서브 클래스 화됩니다.

나는 당신이 가기 전에 갤러리를 사용하는 것으로 전환 할 것을 제안합니다. 갤러리에는 어댑터가보기를 제대로 재활용하지 못하게하는 버그가 있습니다. 즉, 새 이미지가 화면에 나타날 때마다 사용자가 갤러리를 스크롤하는 동안 새로운 ImageView 객체가 만들어집니다. 이는 낭비적이고 가비지 수집이 지속적으로 실행되어 갤러리가 스크롤되는 동안 눈에 띄는 성능 저하로 이어질 것입니다.

어댑터를 시작하려면 SimpleCursorAdapter을 확인하고 온라인에서 SimpleCursorAdapter를 확장하는 방법에 대한 예제를 검색하십시오. getView 메소드 내에서 이미지를 db 밖으로 가져 와서 사용자에게 표시 할보기로 설정합니다.

+0

빠른 업데이트 Tim을 보내 주셔서 감사합니다. 그러나 GalleryView를 UI에서 그대로두고 DB에있는 모든 그림이로드 된 후에 만 ​​사용자에게 액세스 권한을 부여한다면 어떻게해야할까요? 안타깝게도 내 이미지의 가로형 갤러리 유형보기를 제거 할 수있는 옵션이 없습니다. –

+0

즉, 갤러리에 2000 이상의 이미지를로드하는 데 엄청난 시간이 걸릴 것으로 생각하십니까? –

+0

한 번에 2000 개 이상을로드하지 않습니다. 그것은 화면을 채우기 위해 필요한 것을로드합니다. 그런 다음 사용자가 충분히 멀리 스크롤하면 새로운 것이 표시되어 새로운 것을로드합니다. 따라서 화면에 표시된 내용을 모두 미리로드하지는 않습니다. – FoamyGuy

0

사용자 정의 어댑터와 sdcard의 이미지 위치를 보유하는 문자열 배열을 사용하여이 작업을 수행 할 수있었습니다. 이 모든 일을하기 전에 데이터베이스에서 이미지를 가져와 sdcard 위치로 복사해야합니다. 나는이 이미지를 복사하는 데 5-7 초를 더하는 것처럼이 단계를 피하려고 노력하고있다.

관련 문제