0

我正在尝试滚动我的简单列表视图,但不幸的是它滚动不顺畅。

我无法弄清楚似乎是什么问题。我没有做任何花哨的事情。

    public class ArticleRowAdapter extends BaseAdapter {
        private static final int TYPE_MAINARTICLE = 0;
        private static final int TYPE_ARTICLE = 1;
        private static final int TYPE_MAX_COUNT = TYPE_ARTICLE + 1;

        private Context context;         
        private ArrayList<ArticleRow> mData = new ArrayList<ArticleRow>();
        private LayoutInflater mInflater;

        public ArticleRowAdapter(Context context,ArrayList<ArticleRow> data) {        
            this.context = context;
            this.mData = data;
            mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        static class ArticleRowHolder
        {
            TextView tvTitle;
            ImageView ivImage;
            TextView tvSubTitle;
        }

        public void addItem(final ArticleRow item) {
            mData.add(item);
            notifyDataSetChanged();
        }

        @Override
        public int getItemViewType(int position) {
            return position == 0 ? TYPE_MAINARTICLE : TYPE_ARTICLE;
        }

        @Override
        public int getViewTypeCount() {
            return TYPE_MAX_COUNT;
        }

        @Override
        public int getCount() {
            return mData.size();
        }

        @Override
        public ArticleRow getItem(int position) {
            return mData.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ArticleRowHolder holder = null;
            int type = getItemViewType(position);

            if(convertView == null)
            {
                holder = new ArticleRowHolder();
                switch(type)
                {
                case TYPE_MAINARTICLE:
                    convertView = mInflater.inflate(R.layout.mainarticle,parent, false);                
                    break;
                case TYPE_ARTICLE:
                    convertView = mInflater.inflate(R.layout.article,parent , false);                
                    break;            
                }

                holder.tvTitle = (TextView)convertView.findViewById(R.id.articleTitle);
                holder.ivImage = (ImageView)convertView.findViewById(R.id.articleImage);            
                holder.tvSubTitle = (TextView)convertView.findViewById(R.id.articleSubTitle);           
                convertView.setTag(holder);
            }
            else
            {
                holder = (ArticleRowHolder)convertView.getTag();
            }

            ArticleRow articleRow = mData.get(position);  
            holder.tvTitle.setText((CharSequence)articleRow.title);  
            holder.tvSubTitle.setText(Html.fromHtml(articleRow.subTitle));    

            if(articleRow.imageURL == null)
                holder.ivImage.setImageDrawable(this.context.getResources().getDrawable(R.drawable.dunk));
            else
            {
 holder.ivImage.setImageDrawable(this.context.getResources().getDrawable(R.drawable.dunk));
            }

            return convertView;
    }
4

1 回答 1

0

我可以说滞后的原因是 imageViews,这是肯定的:

holder.ivImage = (ImageView)convertView.findViewById(R.id.articleImage);

尽量不要用图像填充 imageViews,看看会发生什么:)。还要检查谷歌的 BitmapFun 和 LazyList - 两者都关于列表/网格视图中的图像

于 2013-04-26T14:16:10.413 回答