2014-07-18 8 views
0

내 사용자 지정 CursorAdapter에서 bindView 메서드를 덮어 썼습니다.ImageView의 소스를 프로그래밍 방식으로 변경할 수 있습니까

ListView의 각보기에 대한 이미지 리소스를 설정해야합니다.

R.drawable.innervate는 res/drawable/폴더에있는 이미지의 이름입니다.

setImageResource 메서드는 정수로만 매개 변수를 사용하지만 내 리소스 이름 만 알고 있습니다.

리소스 이름 만 알면 내 이미지보기의 이미지 리소스를 어떻게 변경할 수 있습니까?

public void bindView(View view, Context arg1, Cursor cursor) 
{ 

    TextView textView = (TextView) view.findViewById(R.id.label); 
    textView.setText(cursor.getString(1)); 

    ImageView imageView = (ImageView) view.findViewById(R.id.icon); 
    imageView.setImageResource(R.drawable.innervate);  
} 

이미지 리소스의 데이터는 커서에서 가져옵니다. 그래서, 내 데이터베이스에서 사진의 이름을 가져오고 있으며 사진은 내 res/drawable/폴더에 있습니다.

다음
context.getResources().getIdentifier("drawableName", "drawable", context.getPackageName()); 

당신이 그 이름을 알고있는 당김의 resource id을 얻을하는 데 사용할 수있는 정적 메서드의 예입니다

+0

어떤 이미지를 사용하고 싶은지 어떻게 알 수 있습니까? 이 데이터는 어디에 저장되어 있습니까? –

+0

드로어 블은 res/drawable/폴더에 있습니다. 나는 자원의 정수 ID를 모른다. 그러나 그것의 이름을 안다. 예 : innervate.png; moonfire.png; – Pierre

+0

이름을 어떻게 아십니까? 해당 데이터는 앱 코드에 어디에 저장됩니까? –

답변

2

당신이 사용하고 싶습니다.

imageView.setImageResource(getDrawableId(this, "innervate")); 
1

당신은 Resources.getSystem().getIdentifier()를 사용할 수 있습니다 그래서 내 방법을 사용하는 예는 위의

public static int getDrawableId(Context context, String nameOfDrawable) { 
    return context.getResources().getIdentifier(nameOfDrawable, "drawable", context.getPackageName()); 
} 

(입술/당김 폴더에 있어야 함). 이 방법은 종종 R.id을 사용할 때 남용되는 경우가 많지만, 여기에서 사용하는 합법적 인 이유가 있다고 생각합니다.

관련 문제