Android Recyclerview适配器 加载头部 以及自定义View
来源:互联网 发布:手机屏幕动物软件 编辑:程序博客网 时间:2024/04/18 23:59
import android.content.Context;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import java.util.List;import bean.TuijianBean;import commerce.bick.com.jdcommerce.R;/** * Created by wsy on 2016/8/4. */public class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.MyHolder> { private RecyclerView mRecyclerView; private List<TuijianBean> data; private Context mContext; private View VIEW_FOOTER; private View VIEW_HEADER; private View VIEW_VIEWPAGE; private View VIEW_MIAOPAGE; //Type private int TYPE_NORMAL = 1000;//默认 private int TYPE_HEADER = 1001;//头部 private int TYPE_FOOTER = 1002;//脚部 private int TYPE_VIEWPAGE=1003;//Viewpage private int TYPE_MIAOPAGE=1004;//秒杀部位 public RecycleAdapter(List<TuijianBean> data, Context mContext) { this.data = data; this.mContext = mContext; } @Override public RecycleAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_FOOTER) { return new MyHolder(VIEW_FOOTER); } else if (viewType == TYPE_HEADER) { return new MyHolder(VIEW_HEADER); }else if(viewType==TYPE_VIEWPAGE){ return new MyHolder(VIEW_VIEWPAGE); }else if(viewType==TYPE_MIAOPAGE){ return new MyHolder(VIEW_MIAOPAGE); } else { return new MyHolder(getLayout(R.layout.item_list_layout)); } } @Override public void onBindViewHolder(final MyHolder holder, int position) { if (!isHeaderView(position) && !isFooterView(position) && !isViewPageView(position) &&!isMiaoPageView(position)) { if (haveHeaderView()) position--; if (havePageView()) position--; if (haveMiaoView()) position--; ImageView iv = holder.itemView.findViewById(R.id.zhu_iv_gv); TextView tv = holder.itemView.findViewById(R.id.zhu_tv); TextView zhu_tv_price=holder.itemView.findViewById(R.id.zhu_tv_price); zhu_tv_price.setText("¥"+data.get(position).price); // Toast.makeText(mContext,"商品pid"+data.get(position).pid+data.get(position).title,Toast.LENGTH_SHORT).show(); Glide.with(mContext).load(data.get(position).images).into(iv); tv.setText(data.get(position).title); final int pos = holder.getLayoutPosition()-3; /** * 主页填充数据 */ if(mOnItemClickListener!=null){ //item的点击事件 final int finalPosition = position; holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mOnItemClickListener.onClick(finalPosition,data.get(pos).pid); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { mOnItemClickListener.onLongClick(finalPosition,data.get(pos).pid); return false; } }); } } } private OnItemClickListener mOnItemClickListener; public interface OnItemClickListener{ //点击事件 void onClick( int position,String pid); //长按事件 void onLongClick( int position,String pid); } public void setOnItemClickListener(OnItemClickListener onItemClickListener ){ this. mOnItemClickListener=onItemClickListener; } @Override public int getItemCount() { int count = (data == null ? 0 : data.size()); if (VIEW_FOOTER != null) { count++; } if (VIEW_HEADER != null) { count++; } if(VIEW_MIAOPAGE !=null){ count++; } if(VIEW_VIEWPAGE !=null){ count++; } return count; } @Override public int getItemViewType(int position) { if (isHeaderView(position)) { return TYPE_HEADER; } else if (isFooterView(position)) { return TYPE_FOOTER; }else if(isViewPageView(position)){ return TYPE_VIEWPAGE; }else if(isMiaoPageView(position)){ return TYPE_MIAOPAGE; } else { return TYPE_NORMAL; } } @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { try { if (mRecyclerView == null && mRecyclerView != recyclerView) { mRecyclerView = recyclerView; } ifGridLayoutManager(); } catch (Exception e) { e.printStackTrace(); } } private View getLayout(int layoutId) { return LayoutInflater.from(mContext).inflate(layoutId, null); } public void addHeaderView(View headerView) { if (haveHeaderView()) { throw new IllegalStateException("hearview has already exists!"); } else { //避免出现宽度自适应 ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); headerView.setLayoutParams(params); VIEW_HEADER = headerView; ifGridLayoutManager(); notifyItemInserted(0); } } public void addFooterView(View footerView) { if (haveFooterView()) { throw new IllegalStateException("footerView has already exists!"); } else { ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); footerView.setLayoutParams(params); VIEW_FOOTER = footerView; ifGridLayoutManager(); notifyItemInserted(getItemCount() - 1); } } public void addPageView(View pageView) { if (havePageView()) { throw new IllegalStateException("pageView has already exists!"); } else { ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); pageView.setLayoutParams(params); VIEW_VIEWPAGE = pageView; ifGridLayoutManager(); notifyItemInserted(1); } } public void addMiaoView(View miaoView) { if (haveMiaoView()) { throw new IllegalStateException("miaoView has already exists!"); } else { ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); miaoView.setLayoutParams(params); VIEW_MIAOPAGE = miaoView; ifGridLayoutManager(); notifyItemInserted(2); } } private void ifGridLayoutManager() { if (mRecyclerView == null) return; final RecyclerView.LayoutManager layoutManager = mRecyclerView.getLayoutManager(); if (layoutManager instanceof GridLayoutManager) { final GridLayoutManager.SpanSizeLookup originalSpanSizeLookup = ((GridLayoutManager) layoutManager).getSpanSizeLookup(); ((GridLayoutManager) layoutManager).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { return (isHeaderView(position) || isFooterView(position) ||isViewPageView(position)) || isMiaoPageView(position) ? ((GridLayoutManager) layoutManager).getSpanCount() : 1; } }); } } private boolean haveHeaderView() { return VIEW_HEADER != null; } public boolean haveFooterView() { return VIEW_FOOTER != null; } private boolean havePageView() { return VIEW_VIEWPAGE != null; } private boolean haveMiaoView() { return VIEW_MIAOPAGE != null; } private boolean isHeaderView(int position) { return haveHeaderView() && position == 0; } private boolean isFooterView(int position) { return haveFooterView() && position == getItemCount() - 1; } private boolean isViewPageView(int position) { return havePageView() && position == 1; } private boolean isMiaoPageView(int position) { return haveMiaoView() && position == 2; } public static class MyHolder extends RecyclerView.ViewHolder { public MyHolder(View itemView) { super(itemView); } }}
阅读全文
1 0
- Android Recyclerview适配器 加载头部 以及自定义View
- 自定义View刷新头部,已适配AbsListView、RecyclerView
- Android RecyclerView添加头部
- recyclerView 自定义适配器
- Android从零开搞系列:自定义View(2)继承RecyclerView实现下拉刷新和加载更多
- Android自定义View--加载动画
- Android View 下拉刷新之头部效果自定义 [水]
- Android 自定义ScrollView实现拉下伸缩头部view
- RecyclerView的使用以及下拉刷新自动加载(添加点击事件、头部)
- Android RecyclerView通用适配器
- android RecyclerView 通用适配器
- Android RecyclerView添加Header头部
- Android自定义view以及组合view
- Android 自定义View以及View绘制详解
- android之自定义webView之头部进度加载效果
- ReCyclerView添加头部和底部加载
- 自定义带头部和尾部的RecyclerView
- 可以添加头部和尾部View并且支持setOnItemClickListener和滑到底部自动加载更多的RecyclerView
- [转载]SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别
- 10. Regular Expression Matching
- Idea Intellij加载项目之后端口号修改
- 购物车(二级列表)
- etherem创世块的创建、创建账户以及账户间的建立通道
- Android Recyclerview适配器 加载头部 以及自定义View
- 大话设计模式----开放-封闭原则
- nginx 服务器上Laravel5.1框架的一些配置
- 腾讯云 centos7 配置服务器所需要知道的
- 面试Java web,有关于hibernate一般都问什么问题?
- 自定义浏览器协议,实现web页面调用本地程序
- EA&UML日拱一卒-状态图::状态机
- Test 2017.10.24
- codeforces #442 B