2 qq863017854 QQ863017854 于 2016.02.20 10:34 提问

Android listview中的图片不停的刷新 并会随意显示

本人小白,刚做完一个新闻客户端,但是目前列表中的图片会随意的刷新显示,慢慢下滑刷新列表的话会好一点,我觉得是适配器更新问题。

 public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null){
            convertView = LayoutInflater.from(context).inflate(R.layout.news_item, null);
        }

        TextView Title = (TextView) convertView.findViewById(R.id.Title);
        TextView date = (TextView) convertView.findViewById(R.id.date);
        TextView comment_count = (TextView)convertView.findViewById(R.id.comment_count);
        ImageView thumb_value = (ImageView) convertView.findViewById(R.id.thumb_value);
        News news = newsList.get(position);
        Title.setText(news.getTitle());
        date.setText("发布于"+news.getDate());
        comment_count.setText(news.getComment_count()+"条评论");
        String picUrl = news.getPicUrl();
        thumb_value.setTag( picUrl);//这个怎么调用???
        HttpUtils.setPicBitmap(thumb_value,picUrl);

        return convertView;
    }


    加载:
        public static void setPicBitmap(final ImageView thumb_value, final String picUrl){

        new Thread(new Runnable() {
            @Override
            public void run() {

                try {

                    HttpURLConnection conn = (HttpURLConnection) new URL(picUrl).openConnection();
                    conn.connect();
                    InputStream is = conn.getInputStream();
                    Bitmap bitmap = BitmapFactory.decodeStream(is);
                    thumb_value.setImageBitmap(bitmap);
                    is.close();
                } catch (Exception e) {
                    e.printStackTrace();
                } 
            }
        }).start();try {
            Thread.sleep(1);
        } catch (InterruptedException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }

    }

6个回答

tzizi5566
tzizi5566   2016.02.20 21:44
已采纳
bdmh
bdmh   Ds   Rxr 2016.02.20 14:56

就是你代码写的有问题,好好查你的适配器

ljt2724960661
ljt2724960661   2016.02.20 15:15

你是不是起线程来更新图片了,这是convertView复用机制的一个缺点,那样就在getView方法里给显示图片的ImageView对象设置一个标签(setTag()),在线程中更新图片之前先判断是否与当前图片的标签一致。
代码就那几行;

QQ863017854
QQ863017854 原本用了线程的
接近 2 年之前 回复
QQ863017854
QQ863017854 我在getview里设置了标签 在另一个activity中的线程中怎么调用这个标签?
接近 2 年之前 回复
crazy1235
crazy1235   Ds   Rxr 2016.02.21 10:00

listview复用的问题。网上的解决办法很多,百度一下就知道。
http://blog.csdn.net/guolin_blog/article/details/45586553

QQ863017854
QQ863017854   2016.02.20 11:31

求大神解答 !!!急

baidu_34026491
baidu_34026491   2016.02.20 11:43

本人小白 刚下载此软件 ,不清楚

QQ863017854
QQ863017854 下载? 你哪里下来的?你下的是ios的吧
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!