2012-08-04 3 views
1

내가 10 이미지 뷰가 :안드로이드 동적 이미지

ImageView Card0=(ImageView)findViewById(R.id.Card0); 
..... 
ImageView Card9=(ImageView)findViewById(R.id.Card9); 
모든 이미지를 내 당김 폴더에

하지만 원격 데이터베이스에서 카드를 선택하고 있습니다. PHP 스크립트는 10 개의 무작위 카드를 생성합니다.

Cards = deal.split(":"); 

가 지금은 이미지를 설정하려면 :

나는 파일 이름이 포함 된 배열이

Card0.setImageResource(R.drawable.Cards[0]); 

내가 해봤하고 많은 검색 그러나 어떤 변수 setImageResource(R.drawable.*Variable*);을 설정할 수 없습니다

누군가 plz 도움.

+0

파일 이름은 무엇입니까? card0.png, card1.png ...? 'deal'의 내용은 무엇입니까? –

답변

2

R.id.drawable. *을 사용하여 동적으로로드 할 수 없습니다.

해결 방법 1 :

나는 당신의 카드 이미지의 이름을 가정합니다은 다음과 같습니다 card0.png, card1.png ... 을 card9.png 난 당신이 res 디렉토리 내부 assets 디렉토리를 (만들 제안). 카드 이미지를 assets 디렉토리로 복사하십시오.

import android.app.Activity; 
import android.content.res.AssetManager; 
import android.graphics.drawable.Drawable; 

import java.io.InputStream; 
import java.io.IOException; 

public class YourActivity extends Activity { 

//... 

    public Drawable loadAssetImage(String fileName) { 
     AssetManager assetMgr = this.getAssets(); 

     try { 
      InputStream is = assetMgr.open(fileName); 
      Drawable d = Drawable.createFromStream(is, null); 
      return d; 
     }catch(IOException e) { 
      // error... 
      return null; 
     }  
    } 
} 

loadAssetImage() 방법은 assets 디렉토리에서 이미지를로드합니다. 이제 문자열 매개 변수를 받아들이므로 이미지를 동적으로로드 할 수 있습니다.

디렉터리 이름은 assets이어야합니다. Android는 assets 디렉토리의 내부 리소스에 직접 액세스 할 수 있습니다.

해결 방법 2

public Drawable loadCardImage(int index) { 
    switch(index) { 
    case 0: 
     return android.R.Card0; 

    case 1: 
     return android.R.Card1; 

    .. 
    case 9: 
     return android.R.Card9;   
    } 
    return null; 
} 

당신은 서버에서 카드의 인덱스를받을 것입니다. 이 함수는 적절한 리소스를 반환합니다.

+0

대단히 고마워. – Shuvo

+0

당신은 오신 것을 환영합니다. –