2012-02-12 5 views
1

내 앱에 일부 이미지가 gridview에 표시되는 섹션이 있습니다. 있는 gridview가 설정되기 전에SD 카드의 비트 맵 ID 받기

은, 다음이 수행됩니다 이미지 파일 이름의

  • 다운로드 목록을 인터넷
  • 에서 그리기 폴더
  • 경우]에 이미 존재하는 항목이 목록을 비교 이미지가 Drawable 폴더에 없으면 다운로드하여 SD 카드에 저장하십시오.

그리드 뷰를 설정할 때 리소스 폴더 ("드로어 블")에있는 것처럼 쉽게 얻을 수있는 드로어 블 ID를 사용하여 수행합니다.

그러나 SD 카드 이미지를 gridview에 포함해야하는 경우 ID를 다시 검색하려면 어떻게해야합니까?

답변

2

sdcard에서 이미지를 가져 와서 URI 배열로 변환하는 코드가 있는데, ID는 URI와 비슷합니다.

private void getData() { 
    File f = new File("/mnt/sdcard/"); 
    File[] imagelist = f.listFiles(new FilenameFilter(){ 

    public boolean accept(File dir, String name) 
    { 
     return ((name.endsWith(".jpg"))||(name.endsWith(".png"))); 
    } 
    }); 
    mFiles = new String[imagelist.length]; 

    for(int i= 0 ; i< imagelist.length; i++) 
    { 
     mFiles[i] = imagelist[i].getAbsolutePath(); 
    } 
    mUrls = new Uri[mFiles.length]; 

    for(int i=0; i < mFiles.length; i++) 
    { 
     mUrls[i] = Uri.parse(mFiles[i]);    
    } 
} 

이 같은 URI를 사용할 수 있습니다 : -

ImageView imageView=new ImageView(this); 
    imageView.setImageURI(mUrls[i]); 
+0

스포일러 경고를 추가하는 것을 잊었습니다. 어쨌든 원하는 경우 파일 이름 문자열로 작업 할 수 있습니다. 나는 URI 방식을 좋아합니다. 그리고 이미 존재하는 이미지 ID를 드로어 블 폴더에있는 URI로 변환 할 수 있습니다. – noob

+0

고마워, 나는이 코드로 작업 할 수있을 것이다 :) – eightx2

3

앱과 함께 패키지 된 파일 (예 : 내부 또는 외부 저장소로 다운로드 한 파일)에는 리소스 ID가 없습니다.

리소스 ID는 문자열, 이미지 등의 패키지 리소스를 참조하는 축약 방법입니다. 이러한 ID는 빌드시 생성되며 내부 리소스에만 의미가 있습니다.

외부 소스에서 얻은 이미지를 사용하려면 파일 이름으로 액세스하고 GridView에 추가되는 ImageViews을 생성해야합니다.

그리드의 여러 이미지 (터치/클릭 목적 일 수도 있음)를 구별해야하는 경우 포함 된 이미지의 리소스 ID 또는 파일 이름에 신경 쓰지 않고 처리하는 것은 ImageView입니다.

+0

좋은 설명, 감사합니다. – eightx2

관련 문제