回答:
これを試して、
int id = getResources().getIdentifier("yourpackagename:drawable/" + StringGenerated, null, null);
これは、アクセスしたいドローアブルのIDを返します...次のようにして、imageviewに画像を設定できます。
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()の使用を検討してください。」シェットが述べたように
投稿されたすべての回答が今日適用されるわけではありません。たとえば、getDrawable()は非推奨です。これが更新された答えです、乾杯!
ContextCompat.getDrawable(mContext, drawable)
文書化された方法から
public static final android.graphics.drawable.Drawable getDrawable(@NotNull android.content.Context context、
@ android.support.annotation.DrawableRes int id
このコードを使用してみてください:
ImageView ImgView = (ImageView)findViewById(R.id.ImgView);
ImgView.setImageResource(R.drawable.myicon);
アクティビティではないクラスでこのようなResourcesオブジェクトを取得できない場合は、たとえばgetResources()のgetContext()メソッドを追加する必要があります。
ImageView image = (ImageView) v.findViewById(R.id.item_image);
int id = getContext().getResources().getIdentifier(imageName, "drawable", getContext().getPackageName());
image.setImageResource(id);
POJO.javaクラスを作成し、「コンストラクタ、ゲッター、セッターメソッド」を作成する
class POJO{
public POJO(Drawable proImagePath) {
setProductImagePath(proImagePath);
}
public Drawable getProductImagePath() {
return productImagePath;
}
public void setProductImagePath(Drawable productImagePath) {
this.productImagePath = productImagePath;
}
}
次に、イメージのドローアブルリソースを介してCustomAdapter.javaにアダプターを設定します。
class CustomAdapter extends ArrayAdapter<POJO>{
private ArrayList<POJO> cartList = new ArrayList<POJO>();
public MyCartAdapter(Context context, int resource) {
super(context, resource);
}
public MyCartAdapter(Context context, ArrayList<POJO> cartList) {
super(context, 0, cartList);
this.context = context;
this.cartList = cartList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
/*
*Here you can setup your layout and references.
**/
ImageView productImage = (ImageView) rootView.findViewById(R.id.cart_pro_image);
productImage.setImageDrawable(POJO.getProductImagePath());
}
}
次に、ActivityClass.javaを介して参照を渡します
public class MyCartActivity extends AppCompatActivity{
POJO pojo;
CustomAdapter customAdapter;
ArrayList<POJO> cartList = new ArrayList<POJO>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
customAdapter = new CustomAdapter(this, cartList);
pojo = new POJO(getResources().getDrawable(R.drawable.help_green));
}
}
私のプロジェクトの一部で、すべてがうまくいきます!)
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
final ModelSystemTraining modelSystemTraining = items.get(position);
int icon = context.getResources().getIdentifier(String.valueOf(modelSystemTraining.getItemIcon()), "drawable", context.getPackageName());
final FragmentViewHolderSystem fragmentViewHolderSystem = (FragmentViewHolderSystem) holder;
final View itemView = fragmentViewHolderSystem.itemView;
// Set Icon
fragmentViewHolderSystem.trainingIconImage.setImageResource(icon);
// Set Title
fragmentViewHolderSystem.title.setText(modelSystemTraining.getItemTitle());
// Set Desc
fragmentViewHolderSystem.description.setText(modelSystemTraining.getItemDescription());