解決pullToRefreshScrollView不能新增頭佈局的方法
阿新 • • 發佈:2019-02-07
/** * @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個 } } }