setImageDrawable을 동적으로 사용하여 ImageView에서 이미지 설정 의 이미지 이름이 같은 데이터베이스에서

drawable폴더 의 이미지 이름이 같은 데이터베이스에서 문자열을 동적으로 생성하고 있습니다.

이제 동적으로 ImageView사용 하기 위해 해당 값을 설정하고 싶습니다 setImageDrawable(R.id.StringGenerated).

어떤 제안 ..



답변

이 시도,

int id = getResources().getIdentifier("yourpackagename:drawable/" + StringGenerated, null, null);

이렇게하면 액세스하려는 드로어 블의 ID가 반환됩니다. 그러면 다음을 수행하여 이미지 뷰에서 이미지를 설정할 수 있습니다.

imageview.setImageResource(id);


답변

Drawable image = ImageOperations(context,ed.toString(),"image.jpg");
            ImageView imgView = new ImageView(context);
            imgView = (ImageView)findViewById(R.id.image1);
            imgView.setImageDrawable(image);

또는

setImageDrawable(getResources().getDrawable(R.drawable.icon));


답변

개인적으로 setImageResource()이런 방법을 선호합니다 .

ImageView myImageView = (ImageView)findViewById(R.id.myImage);
myImageView.setImageResource(R.drawable.icon);


답변

리소스 드로어 블 이름은 문자열로 저장되지 않으므로 빌드 중에 생성 된 정수 상수로 문자열을 해석해야합니다. Resources클래스를 사용하여 문자열을 해당 정수로 해석 할 수 있습니다 .

Resources res = getResources();
int resourceId = res.getIdentifier(
   generatedString, "drawable", getPackageName() );
imageView.setImageResource( resourceId );

이렇게하면 생성 된 문자열 ImageView이 올바른 이미지를로드하는 데 사용할 수 있는 정수로 해석 됩니다.

또는 ID를 사용하여 Drawable수동으로 로드 한 다음 리소스 ID 대신 해당 드로어 블을 사용하여 이미지를 설정할 수 있습니다.

Drawable drawable = res.getDrawable( resourceId );
imageView.setImageDrawable( drawable );


답변

이 대답은 간단합니다.

Drawable myDrawable = getResources().getDrawable(R.drawable.pic);
imageview.setImageDrawable(myDrawable);


답변

이것은 적어도 Android API 15에서 작동합니다.

ImageView = imgv;
Resources res = getResources(); // need this to fetch the drawable
Drawable draw = res.getDrawable( R.drawable.image_name_in_drawable );
imgv.setImageDrawable(draw);

setImageResource ()를 사용할 수 있지만 설명서에는 “UI 스레드에서 비트 맵 읽기 및 디코딩을 수행하므로 지연 시간 문제가 발생할 수 있습니다. setImageDrawable () 또는 setImageBitmap () 사용을 고려하십시오.”라고 명시 되어 있습니다. chetto가 말한대로


답변

게시 된 모든 답변은 오늘 적용되지 않습니다. 예를 들어, getDrawable ()은 더 이상 사용되지 않습니다. 여기에 업데이트 된 답변이 있습니다. 건배!

ContextCompat.getDrawable(mContext, drawable)

문서화 된 방법에서

public static final android.graphics.drawable.Drawable getDrawable (@NotNull android.content.Context context,
@ android.support.annotation.DrawableRes int id