(4.3.1.8)【项目一】子fragment之imageloader

    private void initimageloader() {
        // imageLoader.init(ImageLoaderConfiguration.createDefault(mActivity));
        // TODO Auto-generated method stub
        // 使用DisplayImageOptions.Builder()创建DisplayImageOptions
        options = new DisplayImageOptions.Builder()
                .showStubImage(R.drawable.yunshi_list_item_waitingbg) // 设置图片下载期间显示的图片
                .showImageForEmptyUri(R.drawable.yunshi_list_item_waitingbg) // 设置图片Uri为空或是错误的时候显示的图片
                .showImageOnFail(R.drawable.yunshi_list_item_waitingbg) // 设置图片加载或解码过程中发生错误显示的图片
                .cacheInMemory(true) // 设置下载的图片是否缓存在内存中
                .cacheOnDisc(true) // 设置下载的图片是否缓存在SD卡中
                .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片
                .build(); // 创建配置过得DisplayImageOption对象
    }

    // view的自定义适配器,获取服务器图片,控制显示,和数据
    class MyListViewAdapter extends BaseAdapter {
        private Activity mContext;
        private LayoutInflater inflater;

        private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
        private ArticleList mconfiguration;// 文章简介列表项
        final int TYPE_1 = 1;
        final int TYPE_2 = 2;

        public MyListViewAdapter(Activity context) {
            mContext = context;
            inflater = LayoutInflater.from(mContext);
        }

        public void addItem(ArticleList configuration) {// 注入要显示的文章简介列表对象
            mconfiguration = configuration;
            notifyDataSetChanged();// 在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新ListView
        }

        @Override
        public int getCount() {
            return mconfiguration.getTable() != null ? mconfiguration
                    .getTable().size() : 0;
        }

        // 每个convert view都会调用此方法,获得当前所需要的view样式
        @Override
        public int getItemViewType(int position) {
            int p = position;
            if (p==0) {
                isfirstshow = false;
                return TYPE_2;
            } else
                return TYPE_1;
        }

        @Override
        public Object getItem(int position) {
            return mconfiguration.getTable() != null ? mconfiguration
                    .getTable().get(position) : 0;
        }

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

        // 数据的显示,单个列表的显示
        @Override
        public View getView( int position, View convertView, ViewGroup arg2) {

            Log.d("lilin", "getView==  " + position);

            int type = getItemViewType(position);
            ViewHolder viewHolder;// 控件簇

            ViewHolder holder1 = null;
            ViewHolder holder2 = null;

            if (convertView == null) {
                switch (type) {
                case TYPE_1:
                    convertView = inflater.inflate(
                            R.layout.yunshi_list_item_small, null);
                    holder1 = new ViewHolder();
                    holder1.title = (TextView) convertView
                            .findViewById(R.id.textView);
                    holder1.textContent = (TextView) convertView
                            .findViewById(R.id.textViewContent);
                    holder1.image = (ImageView) convertView
                            .findViewById(R.id.imageView);
                    convertView.setTag(holder1);
                    break;
                case TYPE_2:
                    convertView = inflater.inflate(
                            R.layout.yunshi_list_item_big, null);
                    holder2 = new ViewHolder();
                    holder2.title = (TextView) convertView
                            .findViewById(R.id.textView);
                    holder2.textContent = (TextView) convertView
                            .findViewById(R.id.textViewContent);
                    holder2.image = (ImageView) convertView
                            .findViewById(R.id.imageView);
                    convertView.setTag(holder2);
                    break;
                default:
                    break;
                }
            } else {
                switch (type) {
                case TYPE_1:
                    holder1 = (ViewHolder) convertView.getTag();
                    break;
                case TYPE_2:
                    holder2 = (ViewHolder) convertView.getTag();
                    break;
                }
            }

            switch (type) {
            case TYPE_1:
                viewHolder = holder1;
                break;
            case TYPE_2:
                viewHolder = holder2;
                break;
            default:
                viewHolder = holder1;
                break;
            }
            // 列表项注入获取数据的标题
            viewHolder.title.setText(mconfiguration.getTable().get(position)
                    .getTitle().trim());
            TextPaint tp = viewHolder.title.getPaint();
            tp.setFakeBoldText(true);
            // 判断文章简介是否过长,截取显示
            if (mconfiguration.getTable().get(position).getContent().length() > 10) {
                viewHolder.textContent.setText(mconfiguration.getTable()
                        .get(position).getContent().substring(0, 10)
                        + "......");
            } else {
                viewHolder.textContent.setText(mconfiguration.getTable()
                        .get(position).getContent()
                        + "......");
            }
            // 判断是否有图片信息,00表示没有图片
            viewHolder.image.setTag(mconfiguration.getTable().get(position)
                    .getImageurl());// 给image控件设置tag
            if (!mconfiguration.getTable().get(position).getImageurl()
                    .equals("00")) {// 有图片
                viewHolder.image.setVisibility(View.VISIBLE);// 显示图片栏
                /**
                 * 显示图片 参数1:图片url 参数2:显示图片的控件 参数3:显示图片的设置 参数4:监听器
                 */
                imageLoader.displayImage(mconfiguration.getTable()
                        .get(position).getImageurl(), viewHolder.image,
                        options, animateFirstListener);

            } else {// 没有图片

                viewHolder.image.setVisibility(View.GONE);
            }
            return convertView;
        }
    }

    class ViewHolder {
        public TextView title;// 标题
        public TextView textContent;// 简介
        public ImageView image;// 图片
    }

    /**
     * 图片加载第一次显示监听器
     * 
     * @author Administrator
     * 
     */
    private static class AnimateFirstDisplayListener extends
            SimpleImageLoadingListener {

        static final List<String> displayedImages = Collections
                .synchronizedList(new LinkedList<String>());

        @Override
        public void onLoadingComplete(String imageUri, View view,
                Bitmap loadedImage) {
            if (loadedImage != null) {
                ImageView imageView = (ImageView) view;
                // 是否第一次显示
                boolean firstDisplay = !displayedImages.contains(imageUri);
                if (firstDisplay) {
                    // 图片淡入效果
                    FadeInBitmapDisplayer.animate(imageView, 500);
                    displayedImages.add(imageUri);
                }
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值