listview item显示不同布局

第一步: 需要重写Adapter的 getViewTypeCount() 方法,该方法返回的是int值,为总共是几个布局。

   返回的为2种布局。

    @Override
    public int getViewTypeCount() {
        // TODO Auto-generated method stub
        return 2;
    }

 还需要重写getItemViewType(int position) 方法。

    @Override
    public int getItemViewType(int position) {
        // TODO Auto-generated method stub
        group = groups.get(position);
        if ("common_template".equals(group.getTemplate_type())) {
            return 0;
        } else {
            extra = group.getExtra();

            advisors = extra.getAdvisor();
            return 1;
        }
    }



第二步:

在getview中需要进行判断是哪种布局的类型

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        group = groups.get(position);
        ViewHodlerSquare square = null;
        ViewHodlerRound round = null;

        int type = getItemViewType(position);

        if (convertView == null) {
            switch (type) {
            case 0:
                convertView = View.inflate(context,
                        R.layout.activity_frame_item_square, null);
                square = new ViewHodlerSquare();
                square.imageTvIcon = (ImageView) convertView
                        .findViewById(R.id.tv_icon);
                square.imageTvImg = (ImageView) convertView
                        .findViewById(R.id.iv_TVimg);
                square.textPlaystatus = (TextView) convertView
                        .findViewById(R.id.tv_playstatus);
                square.textWatchnum = (TextView) convertView
                        .findViewById(R.id.tv_watchnum);
                square.textTvname = (TextView) convertView
                        .findViewById(R.id.tv_name);
                square.textTvtime = (TextView) convertView
                        .findViewById(R.id.tv_time);
                convertView.setTag(square);
                break;

            case 1:
                convertView = View.inflate(context,
                        R.layout.activity_frame_item_round, null);
                round = new ViewHodlerRound();
                round.imageBkg = (ImageView) convertView
                        .findViewById(R.id.activity_frame_bkg);
                round.layoutTeacher = (LinearLayout) convertView
                        .findViewById(R.id.linear_teacher);
                round.textContent1 = (TextView) convertView
                        .findViewById(R.id.tv_content1);
                round.textContent2 = (TextView) convertView
                        .findViewById(R.id.tv_content2);
                round.textContent3 = (TextView) convertView
                        .findViewById(R.id.tv_content3);
                round.textPersonNumSee = (TextView) convertView
                        .findViewById(R.id.tv_person_num_see);
                round.textTimeLable = (TextView) convertView
                        .findViewById(R.id.tv_date_time);
                convertView.setTag(round);
                break;
            }
        } else {
            switch (type) {
            case 0:
                square = (ViewHodlerSquare) convertView.getTag();
                break;

            case 1:
                round = (ViewHodlerRound) convertView.getTag();
                break;
            }
        }
        // 填充内容
        switch (type) {
        case 0:
            imageDownloader.download(group.getS1_tag(), square.imageTvIcon);
            imageDownloader.download(group.getS3_bgimg(), square.imageTvImg);
            square.textPlaystatus.setText(group.getS1_tagname());
            square.textWatchnum.setText(group.getS4_numwatch());
            square.textTvname.setText(group.getS5_gtitle());
            square.textTvtime.setText(group.getS5_timelabel());
            break;

        case 1:
            imageDownloader.download(group.getS3_bgimg2(), round.imageBkg);
            if (flag) {
                android.widget.LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.MATCH_PARENT,
                        LinearLayout.LayoutParams.MATCH_PARENT);
                layoutParams.leftMargin = 8;
                layoutParams.weight = 1;
                for (int i = 0; i < advisors.size(); i++) {
                    advisor = advisors.get(i);
                    ImageView imageTeacher = new ImageView(context);
                    imageTeacher.setLayoutParams(new LayoutParams(80, 80));
                    imageTeacher.setLayoutParams(layoutParams);
                    downloadImage(advisors.get(i).getAvatar().getUrl(),
                            imageTeacher);
                    imageTeacher.setOnClickListener(new MyClickListener(advisor
                            .getId()));

                    round.layoutTeacher.addView(imageTeacher);
                }
            }

   
        return convertView;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值