Estou gerando uma string dinamicamente do banco de dados que tem o mesmo nome de imagem na drawable
pasta.
Agora eu quero definir esse valor para ImageView
usar setImageDrawable(R.id.StringGenerated)
dinamicamente.
Alguma sugestão..
Estou gerando uma string dinamicamente do banco de dados que tem o mesmo nome de imagem na drawable
pasta.
Agora eu quero definir esse valor para ImageView
usar setImageDrawable(R.id.StringGenerated)
dinamicamente.
Alguma sugestão..
Respostas:
Tente isso,
int id = getResources().getIdentifier("yourpackagename:drawable/" + StringGenerated, null, null);
Isso retornará o ID do drawable que você deseja acessar ... então você pode definir a imagem na visualização de imagem fazendo o seguinte
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);
ou
setImageDrawable(getResources().getDrawable(R.drawable.icon));
Pessoalmente, prefiro usar o método setImageResource()
como este.
ImageView myImageView = (ImageView)findViewById(R.id.myImage);
myImageView.setImageResource(R.drawable.icon);
Os nomes desenháveis de recursos não são armazenados como seqüências de caracteres, portanto, você precisará resolver a sequência na constante inteira gerada durante a construção. Você pode usar a Resources
classe para resolver a seqüência de caracteres nesse número inteiro.
Resources res = getResources();
int resourceId = res.getIdentifier(
generatedString, "drawable", getPackageName() );
imageView.setImageResource( resourceId );
Isso resolve a string gerada no número inteiro que ImageView
pode ser usado para carregar a imagem correta.
Como alternativa, você pode usar o ID para carregar Drawable
manualmente e, em seguida, definir a imagem usando esse drawable em vez do ID do recurso.
Drawable drawable = res.getDrawable( resourceId );
imageView.setImageDrawable( drawable );
Tão simples quanto esta resposta:
Drawable myDrawable = getResources().getDrawable(R.drawable.pic);
imageview.setImageDrawable(myDrawable);
Isso funciona, pelo menos na API Android 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);
Você pode usar setImageResource (), mas a documentação especifica que "faz leitura e decodificação de Bitmap no thread da interface do usuário, o que pode causar um soluço de latência ... considere usar setImageDrawable () ou setImageBitmap ()". como afirma chetto
Todas as respostas postadas não se aplicam hoje. Por exemplo, getDrawable () está obsoleto. Aqui está uma resposta atualizada, felicidades!
ContextCompat.getDrawable(mContext, drawable)
Do método documentado
public static final android.graphics.drawable.Drawable getDrawable (@NotNull contexto android.content.Context,
@ android.support.annotation.DrawableRes int id
Você pode tentar usar este código:
ImageView ImgView = (ImageView)findViewById(R.id.ImgView);
ImgView.setImageResource(R.drawable.myicon);
Se você não pode obter o objeto Resources como este em uma classe que não é uma Activity, é necessário adicionar o método getContext () para getResources (), por exemplo
ImageView image = (ImageView) v.findViewById(R.id.item_image);
int id = getContext().getResources().getIdentifier(imageName, "drawable", getContext().getPackageName());
image.setImageResource(id);
Você também pode usar algo como:
imageView.setImageDrawable(ActivityCompat.getDrawable(getContext(),
R.drawable.generatedID));
ou usando o Picasso:
Picasso.with(getContext()).load(R.drawable.generatedId).into(imageView);
Construa uma classe POJO.java e crie "métodos construtor, getter e setter"
class POJO{
public POJO(Drawable proImagePath) {
setProductImagePath(proImagePath);
}
public Drawable getProductImagePath() {
return productImagePath;
}
public void setProductImagePath(Drawable productImagePath) {
this.productImagePath = productImagePath;
}
}
Em seguida, configure os adaptadores por meio de recursos extraíveis de imagem para 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());
}
}
Em seguida, passe as referências pelo 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));
}
}
um pedaço do meu projeto, tudo funciona! )
@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());
O arquivo 'R' não pode ser gerado no tempo de execução do aplicativo. Você pode usar outras alternativas, como usar if-else
ouswitch-case
R
novamente