Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android的列表中设置imageview中的默认图片?_Android_Listview_Bitmap_Imageview_Drawable - Fatal编程技术网

如何在android的列表中设置imageview中的默认图片?

如何在android的列表中设置imageview中的默认图片?,android,listview,bitmap,imageview,drawable,Android,Listview,Bitmap,Imageview,Drawable,我想在结果为空时显示默认图片,下面是我的尝试: public static Bitmap getBitmapFromURL(String src) { try { URL url = new URL(src); HttpURLConnection connection = (HttpURLConnection) url.openConnection();

我想在结果为空时显示默认图片,下面是我的尝试:

public static Bitmap getBitmapFromURL(String src) {
                try {
                    URL url = new URL(src);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setDoInput(true);
                    connection.connect();
                    InputStream input = connection.getInputStream();
                    Bitmap myBitmap = BitmapFactory.decodeStream(input);
                    connection.disconnect();
                    return myBitmap;
                } catch (IOException e) {
        //          tasvirdimg.setImageResource(R.drawable.p3_books);
                    e.printStackTrace();
                    return null;
                }
            }
        }
要使用的类
getBitmapFromURL

class RetrievePic extends AsyncTask<String, String, Bitmap>{

                    @Override
                    protected Bitmap doInBackground(String... urls) {
                        String url = urls[0];
                        return JSONCommands.getBitmapFromURL(url);
                    }   
    }
当图片为空时,它不显示任何内容,但应该显示默认图片,即
R.drawable.p3\u books
。感谢您的帮助。

您可以尝试以下方法:

if(img == null) 
{ 
     tasvirlimg.setImageDrawable(R.drawable.p3_books); 
}
else
{ 
     tasvirlimg.setImageBitmap(img);
}

为什么不在xml中设置项目的默认pic,然后在结果不为空时替换默认pic

  <ImageView 
     ...
         android:src="@drawable/p3_books"
        />

编辑:

class RetrievePic扩展了异步任务{
最终图像=(ImageView)findViewById(R.id.limg_tasvir);
@凌驾
受保护位图doInBackground(字符串…URL){
字符串url=url[0];
返回jsonCommand.getBitmapFromURL(url);
}
@凌驾
受保护的void onPreExecute(){
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
图片.挫折资源(R.drawable.p3_图书);
}
});
}
}

您要做的是实现适配器的
getView()
方法,类似这样

...
final imageView = ...;
imageView.setImageBitmap(defaultBitmap);
new AsyncTask<Void,Void,Bitmap>() {
  public Bitmap doInBackground(Void... params) {
    // get bitmap from `net, or return null if failure
  }

  public void onPostExecute(Bitmap result) {
    if (result != null) {
      imageView.setBitmap(result);
    }
  }
}.execute();
。。。
最终图像视图=。。。;
setImageBitmap(默认位图);
新建异步任务(){
公共位图doInBackground(无效…参数){
//从`net获取位图,如果失败,则返回null
}
public void onPostExecute(位图结果){
如果(结果!=null){
imageView.setBitmap(结果);
}
}
}.execute();

这样,将设置默认值。如果您碰巧获得网络结果,请更改默认值。

您可以使用或下载您的图像,还可以为您的占位符设置默认图像。我想知道是否有人来这里编辑问题等以获得星星!!!!请帮我解决问题@Mohammaddahchamani坦克你,但你能帮我用我自己的代码吗?!!我认为您应该在if/else语句中设置默认图片,而不是catch块。@MohammadRahchamani是的。我这么做了,但没用,有错误,亲爱的!tasvirlimg是ImageView,没有setImageBitmap类。请尝试tasvirling.setImageDrawable(R.drawable.p3_);而不是setImageBitmap(..)。如果这不适合你。您可以尝试Jeffrey Blattman发布的示例,这也应该有效。亲爱的,您看到我的代码了吗?因为R.drawable.p3_books是一个资源,我已经尝试过tasvirdimg.setImageResource(R.drawable.p3_books);谢谢这是我的ImageView:正如你所看到的,我设置了这个选项,但它不起作用!runOnUiThread和tasvirdimg是2个错误。我在另一个类中有tasvirdimg,我不知道runOnUiThread。@NiloofarHakkaki-我刚刚注意到并将其更改为tasvirlimg-如果runOnUiThread出现错误,请将其取出-受保护的void onPreExecute(){tasvirlimg.setBackgroundResource(R.drawable.p3_books);}tasvirlimg和tasvirdimg都在其他类中:)位图的类是独占的。@NiloofarHakkaki-您是否尝试将它们设置为静态以便能够访问它们-我需要查看更多代码或错误日志-您应该将默认pic设置为您发现的任何一个VIEWBYID limg_tasvirI无法理解的类型:))请解释一下一个15个例子的声誉去理解!!!非常感谢。
        class RetrievePic extends AsyncTask<String, String, Bitmap>{

     final image = (ImageView) findViewById(R.id.limg_tasvir);

            @Override
            protected Bitmap doInBackground(String... urls) {
                String url = urls[0];
                return JSONCommands.getBitmapFromURL(url);
            }

            @Override
                    protected void onPreExecute() {
                         runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                        image.setBackgroundResource(R.drawable.p3_books);
                                }
                            });

        }
}
...
final imageView = ...;
imageView.setImageBitmap(defaultBitmap);
new AsyncTask<Void,Void,Bitmap>() {
  public Bitmap doInBackground(Void... params) {
    // get bitmap from `net, or return null if failure
  }

  public void onPostExecute(Bitmap result) {
    if (result != null) {
      imageView.setBitmap(result);
    }
  }
}.execute();