Ответ 1
Нашел ответ. К сожалению, Picasso не разрешает переносимую загрузку через URI. Это входящая функция.
Я должен показать drawable
из res
в ImageView
. В этом приложении я использую Пикассо по некоторым причинам.
В этом случае мне нужно загрузить drawable
используя его URI, а не его идентификатор. Для этого вот мой код:
uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://"+context.getPackageName()+"/drawable/" + drawableName);
где drawableName используется здесь - это имена файлов, а не их идентификаторы ресурсов.
затем
Picasso.with(context).load(uri).into(imageView);
Я точно знаю, что нарисованное имя правильное, но Пикассо, похоже, не любит этот ури.
Нашел ответ. К сожалению, Picasso не разрешает переносимую загрузку через URI. Это входящая функция.
Если изображения находятся в вашей папке с выделением, вы можете просто загрузить ее.
Picasso.with(context).load(R.drawable.drawableName).into(imageView);
и picasso не загрузит его в Uri.
Вы можете загружать локальные файлы изображений из своей папки для рисования, если вы знаете целочисленное значение изображения, которое вы хотите загрузить.
Тогда вы можете просто сделать:
Picasso.with(getContext()).load(imageResourceId)
.error(R.drawable.ic_launcher)
.into(imageView);
куда
ImageView
это вид, который вы хотите отобразить изображение. Например:
imageView = (ImageView) convertView
.findViewById(R.id.itemImage);
И где
imageResourceId
является целочисленным значением отрисовки. Вы можете получить это целочисленное значение следующим образом:
int productImageId = resources.getIdentifier(
productImageName, "drawable", context.getPackageName());
так же как
productImageName
имя рисованного элемента, который вы хотите нарисовать (т.е. "ic_launcher")
ЭТО МОЖЕТ БЫТЬ СДЕЛАНО ВНУТРИ АДАПТЕРА
Как упоминалось в документации Picasso.
теперь они поддерживают загрузку изображения из URI, как показано ниже:
load(android.net.Uri uri)
поэтому вам нужно сделать что-то вроде следующего:
Picasso.with(context).load(uri).into(imageView);
точно так же, как вы уже делаете.
Хопетат помогает.
Из Picasso v2+ здесь большая модификация. Новая версия очень полезна для управления данными кэша изображений. Это с помощью Singleton Instance.
Gradle
implementation 'com.squareup.picasso:picasso:2.71828'
Установить нарисованное изображение
Picasso.get()
.load(url)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);
Бонус, получи отрисовку по имени:
public static int getDrawableIdFromFileName(Context context, String nameOfDrawable) {
return context.getResources().getIdentifier(nameOfDrawable, "drawable", context.getPackageName());
}