web-dev-qa-db-ja.com

java.lang.IllegalArgumentException:ピカソのパスを空にすることはできません

私はピカソを使用してmysql DBからカスタムリストビューに画像をロードしています。 URLが直接渡されると画像が読み込まれますが、URLを文字列に割り当てて渡すと、パスが空であってはならないという例外がスローされます。

String imageStringUrl = md.Image;

画像文字列には http://example.com/image.jpg が含まれています

以下のようにピカソを渡します。

Picasso.get()
.load(imageStringUrl)
.into(iview);                                                           

このように渡すと、Java.lang.IllegalArgumentException:パスが空であってはなりません。上記の手順を以下のように試しましたが、画像が読み込まれません。

Picasso.get()
.load(new File(imageStringUrl))
.into(iview);

上記の宣言の何が問題になっていますか?

10
user2269164

同様の問題がありました。 URL文字列が空かどうかを確認してください。空の場合は、デフォルトの画像を指定するか、URLから読み込みます。お役に立てれば。

if (image.isEmpty()) {
   iview.setImageResource(R.drawable.placeholder);
} else{
    Picasso.get().load(image).into(iview);
  }
37
veena

最初に文字列パスをトリミングして、URL文字列が空かどうかを確認しますが、image.isEmpty()のようにチェックせずに、次のチェックを行います。

if (path.trim().length() == 0)

私はピカソからのコードをチェックしました、そしてそれは彼らがこのようにチェックしている方法です。参考までに、コードベースのコードを以下に示します。

public RequestCreator load(String path) {
    if (path == null) {
      return new RequestCreator(this, null, 0);
    }
    if (path.trim().length() == 0) {
      throw new IllegalArgumentException("Path must not be empty.");
    }
    return load(Uri.parse(path));
  }
4
ozmank

md.Imageは空の文字列を返します。だからあなたのimage url in picasso in this like:

Picasso.get()
.load(" http://xxx.xxx.com/images/New%20folder/Desert.jpg.")
.into(imageView);

それがうまくいくことを願っています。

0
HassanUsman