多种布局的ListView

多种布局的ListView和但中布局的ListView唯一不同的是:实现多种布局的ListView的Adapter必须实现getViewTypeCount()和getItemViewType(int position)方法.

getViewTypeCount:告诉管理器你有多少种布局。

getItemViewType:该position需返回哪种布局,必须从0开始。

示例代码如下:

class ScheduleAdapter extends BaseAdapter {

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

        @Override
        public Object getItem(int position) {
            return mCinemaModelList.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }
        
        @Override
        public int getViewTypeCount() {
            return 2;
        }
        
        @Override
        public int getItemViewType(int position) {
            if (mCinemaModelList.get(position) instanceof CinemaModel) {
                return 0;
            }
            return 1;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (mCinemaModelList.get(position) instanceof CinemaModel) {
                if (convertView == null) {
                    convertView = LayoutInflater.from(mContext).inflate(R.layout.movie_schedulel_cinemainfo, null);
                }
                TextView cinemaName = (TextView) convertView.findViewById(R.id.movie_schedule_cinema_name);
                TextView score = (TextView) convertView.findViewById(R.id.movie_schedule_cinema_score);
                TextView minPrice = (TextView) convertView.findViewById(R.id.movie_schedule_cinema_min_price);
                TextView address = (TextView) convertView.findViewById(R.id.movie_schedule_cinema_address);
                TextView distance = (TextView) convertView.findViewById(R.id.movie_schedule_cinema_distance);
                CinemaModel model = (CinemaModel) mCinemaModelList.get(position);
                cinemaName.setText(model.name);
                double price = model.minPrice / 100.0;
                if (model.score == 0) {
                    score.setText("评分:  暂无");
                } else {

                    score.setText("评分:" + model.score);
                }
                minPrice.setText("最低价:" + new DecimalFormat("00.00").format(price));
                address.setText(model.address);
                distance.setText("距离:" + model.distance + "米");
            } else {
                if (convertView == null) {
                    convertView = LayoutInflater.from(mContext).inflate(R.layout.movie_schedulel_item, null);
                }
                CinemaSchedule cinemaSchedule = (CinemaSchedule) mCinemaModelList.get(position);
                TextView startTime = (TextView) convertView.findViewById(R.id.showtime_start);
                TextView endTime = (TextView) convertView.findViewById(R.id.showtime_end);
                TextView language = (TextView) convertView.findViewById(R.id.showtime_language);
                TextView room = (TextView) convertView.findViewById(R.id.showtime_room);
                TextView price = (TextView) convertView.findViewById(R.id.showtime_price);
                startTime.setText(DateFormat.format("HH:MM", cinemaSchedule.playTime * 1000));
                endTime.setText(DateFormat.format("HH:MM", cinemaSchedule.closeTime * 1000));
                language.setText(cinemaSchedule.language + "/" + cinemaSchedule.edition);
                room.setText(cinemaSchedule.hallName);
                price.setText(new DecimalFormat("00.00").format(cinemaSchedule.price / 100.0));
            }
            return convertView;
        }

效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值