drawable
からres
にImageView
を表示する必要があります。このアプリでは、いくつかの理由でピカソを使用しています。
この場合、IDではなくURIを使用してdrawable
をロードする必要があります。それを行うために、ここに私のコードがあります:
uri = Uri.parse(ContentResolver.SCHEME_Android_RESOURCE + "://"+context.getPackageName()+"/drawable/" + drawableName);
ここで使用されるdrawableNameは、リソースIDではなくファイル名です。
それから
Picasso.with(context).load(uri).into(imageView);
描画可能な名前が正しいことは確かに知っていますが、ピカソはこのURIが好きではないようです。
答えを見つけました。残念ながら、PicassoはURIを介したドロアブルロードを許可していません。これは着信機能です。
画像が描画可能なフォルダにある場合は、それをロードするだけです。
Picasso.with(context).load(R.drawable.drawableName).into(imageView);
ピカソはウリを必要とせずにロードします。
ロードしたいイメージの整数値がわかっている場合は、描画可能フォルダーからローカルイメージファイルを遅延してロードできます。
その後、あなたはちょうどすることができます:
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」)
これはすべて[〜#〜] adapter [〜#〜]内で実行できます。
picasso v2 +からここに大きな変更があります。新しいバージョンは、画像キャッシュデータを管理するために非常に役立ちます。シングルトンインスタンスを使用しています。
[〜#〜] 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());
}
Picasso のドキュメントで述べたように。
次のようなURIからの画像の読み込みをサポートしています。
load(Android.net.Uri uri)
そのため、次のようなことをする必要があります。
Picasso.with(context).load(uri).into(imageView);
あなたがすでにやっていることのように。
Hopethatが役立ちます。