drawable
フォルダーに同じ名前のimageを持つ文字列をデータベースから動的に生成しています。
setImageDrawable(R.id.StringGenerated)
を動的に使ってImageView
にその値を設定したいと思います。
助言がありますか..
これを試して、
int id = getResources().getIdentifier("yourpackagename:drawable/" + StringGenerated, null, null);
これはあなたがアクセスしたいドロウアブルのIDを返すでしょう…そして、あなたは以下をすることによってimageviewでimageを設定することができます
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()の使用を検討してください。 msgstr "chettoによると
投稿されたすべての回答が今日は当てはまりません。たとえば、getDrawable()は推奨されていません。これが更新された答えです。
ContextCompat.getDrawable(mContext, drawable)
文書化された方法から
public static final Android.graphics.drawable.Drawable getDrawable(@NotNull Android.content.Contextコンテキスト、
@ Android.support.annotation.DrawableRes int id
ActivityではないクラスでこのようなResourcesオブジェクトを取得できない場合は、getResources()にgetContext()メソッドを追加する必要があります。
ImageView image = (ImageView) v.findViewById(R.id.item_image);
int id = getContext().getResources().getIdentifier(imageName, "drawable", getContext().getPackageName());
image.setImageResource(id);
あなたはこのコードを使うことを試みることができます:
ImageView ImgView = (ImageView)findViewById(R.id.ImgView);
ImgView.setImageResource(R.drawable.myicon);
次のようなものも使えます。
imageView.setImageDrawable(ActivityCompat.getDrawable(getContext(), R.drawable.generatedID));
またはピカソを使用して:
Picasso.with(getContext()).load(R.drawable.generatedId).into(imageView);
imageView.setImageDrawable(getResources().getDrawable(R.drawable.my_drawable));
私はあなたと同じ問題を抱えていました、そして私はそれを解決するために以下をしました:
**IMAGEVIEW**.setImageResource(getActivity()
.getResources()
.getIdentifier("**IMG**", "drawable", getActivity()
.getPackageName()));
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));
}
}