解决pullToRefreshScrollView不能添加头布局的方法

/**
 * @author  Zhang
 * @version 1.0
 * @create 2018/7/21
 */
public class NearRestaurantAdapter extends RecyclerView.Adapter<NearRestaurantAdapter.ViewHolder> implements View.OnClickListener {
    private Context context;
    private List<NearBusiness.DataBean> list;
    private View headView;
    private final int TYPE_HEAD = 0;
    private final int TYPE_NORMAL = 1;
    private ImageView backTo;

    public NearRestaurantAdapter(Context context, List <NearBusiness.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (headView != null && viewType == TYPE_HEAD) {
            backTo = headView.findViewById(R.id.top_title_backTo);
            backTo.setOnClickListener(this);
            return new ViewHolder(headView);
        }else {
            View view = LayoutInflater.from(context).inflate(R.layout.item_near_business, parent, false);
            view.setOnClickListener(this);
            ViewHolder viewHolder = new ViewHolder(view);
            return viewHolder;
        }
    }


    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position1) {
        if (getItemViewType(position1) == TYPE_HEAD) {
            return;
        }
        final int position = getRealPosition(holder);
        if (holder instanceof ViewHolder) {
            NearBusiness.DataBean dataBean = list.get(position);
            //赋值
            Glide.with(context).load(dataBean.getPic_url()).into(holder.zhaopai);
            holder.name.setText(dataBean.getName());
            holder.ratingBar.setRating((float) dataBean.getWm_poi_score());
            holder.sales.setText(dataBean.getMonth_sales_tip());
            holder.distanceAndTime.setText(dataBean.getDelivery_time_tip() + "/" + dataBean.getDistance());
            holder.avg.setText(String.valueOf(dataBean.getMin_price_tip() + "  |  " + dataBean.getShipping_fee_tip() + "  |  " + dataBean.getAverage_price_tip()));
            //满减和折扣
            List <NearBusiness.DataBean.Discounts2Bean> discounts2 = dataBean.getDiscounts2();
            holder.jianContent.setText(discounts2.get(0).getInfo());
            holder.zheContent.setText(discounts2.get(1).getInfo());
            Glide.with(context).load(discounts2.get(0).getIcon_url()).into(holder.jianImg);
            Glide.with(context).load(discounts2.get(1).getIcon_url()).into(holder.zheImg);
        }
    }
    /**
     * @param headView
     *  这个方法可以简略,在创建此适配器的时候把“headView”放在构造器里传进来。
     *  不过不建议这么做,因为在这个适配器里已经设置了很多判断,可以适应不同的布局,
     *  不管有没有“headView”都可以用这个适配器,所以用的时候直接复制这个适配器就好
     */
    public void addHeadView(View headView) {
        this.headView = headView;
        notifyItemInserted(0);
    }
    private int getRealPosition(ViewHolder holder) {
        int position = holder.getLayoutPosition();
        return headView == null ? position : position - 1;
    }


    @Override
    public int getItemCount() {
        return headView == null ? list.size() : list.size() + 1;
    }

    @Override
    public int getItemViewType(int position) {
        if (headView == null) {
            return TYPE_NORMAL;
        }
        if (position == 0) {
            return TYPE_HEAD;
        }
        return TYPE_NORMAL;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.top_title_backTo:
            listener.OnViewClick();
                break;
        }
    }
    public OnViewClickListener listener;
    public interface OnViewClickListener{
        void OnViewClick();
    }
    public void setOnViewClickListener(OnViewClickListener listener) {
        this.listener = listener;
    }
    class ViewHolder extends RecyclerView.ViewHolder {
        TextView name;
        RatingBar ratingBar;
        ImageView zhaopai;  //招牌图片
        TextView sales;
        TextView distanceAndTime;
        TextView avg;   //起送,配送,人均
        ImageView jianImg;  //满减的图片
        TextView jianContent;
        ImageView zheImg;   //折扣的图片
        TextView zheContent;//
        public ViewHolder(View itemView) {
            super(itemView);
            //查找控件
            ratingBar = itemView.findViewById(R.id.home_ratingNums);
            name = itemView.findViewById(R.id.home_shops_name);//店名
            zhaopai = itemView.findViewById(R.id.home_zhaopai);//招牌
            sales = itemView.findViewById(R.id.home_month_sales);//月销量
            distanceAndTime = itemView.findViewById(R.id.home_distance_time);//距离和时长
            avg = itemView.findViewById(R.id.home_dispatch_tip);//起送|人均
            jianImg = itemView.findViewById(R.id.home_discounts_jian_img);//满减图片
            jianContent = itemView.findViewById(R.id.home_discounts_jian_content);//满减
            zheImg = itemView.findViewById(R.id.home_discounts_zhe_img);//折扣图片
            zheContent = itemView.findViewById(R.id.home_discounts_zhe_content);//折扣
            //查找结束,10个
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值