Как указать путь к изображению Picasso.get().load(Путь к изображению )
В MainActivity в цикле изменяется имена картинок для добавления в ArrayList. Тип String. Картинок много, они все в папке drawable, решил добавлять их в цикле изменяя имя.
Далее в Picasso в адаптере пытаюсь их вставить. Но ничего не выходит. Тип String в Picasso.get().load(String path).into.....
Вопрос в том что если писать в Picasso.get().load(R.drawable.img1).into(holder.imageView); всё работает. Но если написать вместо R.drawable.img1 переменную типа String в которой записано R.drawable.img1 ничего не работает. Как должен быть написан путь или какой тип переменной надо вставлять?
private RecyclerView recyclerView;
private ArrayList<ImagesItem> images = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recycleViewImages);
for(int i = 1; i < 16 ; i++){
String path = "R.drawable.img" + i;
images.add(new ImagesItem(path, i));
}
Adapter adapter = new Adapter(images);
recyclerView.setLayoutManager(new GridLayoutManager(this,5));
recyclerView.setAdapter(adapter);
}
}
Adapter
public class Adapter extends RecyclerView.Adapter<Adapter.NoteViewHolder>{
private ArrayList<ImagesItem> images;
public Adapter(ArrayList<ImagesItem> images) {
this.images = images;
}
@NonNull
@Override
public NoteViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.image_item, parent, false);
return new NoteViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull NoteViewHolder holder, int position) {
ImagesItem note = images.get(position);
Picasso.get().load(note.getImageView()).into(holder.imageView);
holder.textView.setText(Integer.toString(note.getNumber()));
}
@Override
public int getItemCount() {
return images.size();
}
class NoteViewHolder extends RecyclerView.ViewHolder{
private ImageView imageView;
private TextView textView;
public NoteViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageView);
textView = itemView.findViewById(R.id.textView);
}
}
}
Ответы (1 шт):
Автор решения: Pavlo Khyzhniak
→ Ссылка
public String getURLForResource (int resourceId) {
//use BuildConfig.APPLICATION_ID instead of R.class.getPackage().getName() if both are not same
return Uri.parse("android.resource://"+R.class.getPackage().getName()+"/" +resourceId).toString();
}
String imageUrl = getURLForResource(R.drawable.image); или так String imageUri = "drawable://" + R.drawable.image;