1. 程式人生 > >解決pullToRefreshScrollView不能新增頭佈局的方法

解決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個
        }
    }
}