在getView中使用Drawable使ListView变慢

时间:2012-07-17 23:14:50

标签: android listview

我有ListView,显示Drawable s  这是我的代码:

@Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if (convertView == null) {
                holder = new ViewHolder();
                convertView = inflater.inflate(
                        R.layout.main_advertisement_list_view_item, null);

                holder.icon = (ImageView) convertView
                        .findViewById(R.id.imageView1);
                holder.name = (TextView) convertView
                        .findViewById(R.id.textView1);

                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            Log.d("view", holder.name+"");
            Log.d("string",getItem(position)+"");
            holder.name.setText(getItem(position).name);
            holder.icon.setImageResource(
                    categories_icons.getResourceId(position, -1));
            return convertView;
        }

如何延迟加载Drawables?我看过示例和示例,但对于本地drawables,我怎样才能实现这一点,因为我的代码使列表视图移动缓慢?

1 个答案:

答案 0 :(得分:0)

public void setImageResource(int resId)

自:API Level 1

将drawable设置为此ImageView的内容。

这会在UI线程上进行位图读取和解码,会导致延迟打嗝。如果这是一个问题,请考虑使用setImageDrawable

Drawable icon = _context.getResources().getDrawable(R.drawable.icon_1);
holder.icon.setImageDrawable(icon);