admin管理员组文章数量:1610857
今天在学习给RecyclerView添加头部视图时,才发现可以向RecyclerView添加多种视图
具体过程为:在Adapter子类中
重写getItemViewType(int position)
方法,修改相应position的视图类型;
重写onCreateViewHolder(ViewGroup parent,int viewType )
方法,为不同的viewType创建不同的ViewHolder子类;
重写onBindViewHolder(RecyclerView.ViewHolder holder, int position)
方法,为不同的viewType添加不同的绑定方法;
例如,在ViewHolder子类中实现一个自定义的接口
public interface Bind { public void onBind(@param); }
不同的ViewHolder子类有不同的实现方式。然后在onBindViewHolder(RecyclerView.ViewHolder holder, int position)
通一以
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof Bind){
((Bind) holder).onBind(@param);
}
}
形式调用。
在写完之后很好奇什么时候会调用getItemViewType方法,因为看起来貌似对所有ViewHolder子类都调用相同的方法变更视图,却不会由于视图类型导致显示错误或者是报错。
发现:
在调用onBindViewHolder方法之前,会检查getItemViewType(position)检查调用该函数处视图的类型,并从对应的pool中取出同种Type的ViewHolder,若没有对应的ViewHolder,就调用onCreateViewHolder方法新建一个对应的ViewHolder。
本文标签: getItemViewTypeRecyclerViewPositionINT
版权声明:本文标题:关于RecyclerView中getItemViewType(int position) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728606203a1165488.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论