Android 为什么我的listview不能顺利滚动?

Android 为什么我的listview不能顺利滚动?,android,listview,view,scroll,layout-inflater,Android,Listview,View,Scroll,Layout Inflater,我是Android开发的新手,我正在尝试用一个图像填充listview,一个在OnCreate期间从twitter解析的文本。我可以毫无问题地填充listview,但是listview的滚动不是平稳的,而是急促的。起初我认为这是一个模拟器的问题,但在我的设备上它也会显得很不稳定。令人沮丧的是,我使用的是stackoverflow上所有教程和帖子推荐的viewholder方法。非常感谢您的帮助。这是我的密码 public View getView(int position, View conve

我是Android开发的新手,我正在尝试用一个图像填充listview,一个在OnCreate期间从twitter解析的文本。我可以毫无问题地填充listview,但是listview的滚动不是平稳的,而是急促的。起初我认为这是一个模拟器的问题,但在我的设备上它也会显得很不稳定。令人沮丧的是,我使用的是stackoverflow上所有教程和帖子推荐的viewholder方法。非常感谢您的帮助。这是我的密码

 public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {
        LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.listitem, null);
          ViewHolder holder = new ViewHolder();          
          holder.username = (TextView) v.findViewById(R.id.username);        
          holder.message = (TextView) v.findViewById(R.id.message);
          holder.image = (ImageView) v.findViewById(R.id.avatar);
          v.setTag(holder);

    }

    Tweet tweet = tweets.get(position);
    if (tweet != null) {
        ViewHolder holder = (ViewHolder)v.getTag();
        holder.username = (TextView) v.findViewById(R.id.username);
        holder.message = (TextView) v.findViewById(R.id.message);
        holder.image = (ImageView) v.findViewById(R.id.avatar);

        if (holder.username != null) {
            holder.username.setText(tweet.username);
        }

        if(holder.message != null) {
            holder.message.setText(tweet.message);
        }

        if(holder.image != null) {
            holder.image.setImageBitmap(getBitmap(tweet.image_url));

        }
    }
    return v;
}
}

static class ViewHolder {
        TextView username;  
        TextView message;
        ImageView image;
    }

public Bitmap getBitmap(String bitmapUrl) {
    try {
        URL url = new URL(bitmapUrl);
        return BitmapFactory.decodeStream(url.openConnection() .getInputStream()); 
    }
    catch(Exception ex) {return null;}
}

getBitmap方法正在UI线程上下载和解码图像。这将导致滚动出现明显停顿,并在android的更高版本上崩溃


包含一种非常容易实现的异步加载位图的技术

getBitmap是否通过internet下载图像?能否发布getBitmap的代码?位图操作可能非常慢,通常必须异步完成。是的,请检查我的编辑。我添加了该方法,以便您可以查看。@Rob请检查我的编辑,谢谢。您也没有正确使用ViewHolder。ViewHolder的整个要点是,您只需在第一次充气时运行findViewById调用,而不必在以后重复使用传入视图进行转换时运行findViewById调用。您应该删除第二组三个findViewById调用。