android - 为什么我的 ListView 滚动不流畅?

标签 android listview view scroll layout-inflater

我喜欢 Android 开发,我正在尝试使用在 OnCreate 期间从 Twitter 解析的图像和文本填充 ListView 。我可以毫无问题地填充 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 上导致滚动和崩溃的显着暂停。

Developer Guide on Bitmap Processing包含一个相当容易实现的异步加载位图的技术

关于android - 为什么我的 ListView 滚动不流畅?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12451281/

相关文章:

WPF ListView 移除鼠标悬停效果

c# - WPF Listview - 难以在 ListView 中添加项目

android - 使用android的按钮的上下文菜单?

Android:如何将自定义元素放在圆圈/目标上

java - 以 3x3 模式排列屏幕

android - 为什么我不允许在这种情况下使用 setOnClickListener?

Android - 适用于 Android 2.2 或 2.3 的 WiFi API

android - Gradle - 意外的顶级异常 - 无处不在

java - 在没有成员变量的情况下通过实现创建抽象类有什么意义?

.net - ListView跳转或者不收缩