关于Android动态改变recyclerview的item的布局
2016-09-05 09:39
645 查看
Recyclerview 的多个布局,根据不同位置,加载不同的布局
字数340 阅读6613 评论2 喜欢10
大家都知道listview可以使用动态改变item布局。
当然recyclerview同样可以动态改变item布局
1、继承 RecyclerView.Adapter<RecyclerView.ViewHolder>
2、重写 getItemViewType(int position)
3、在 onCreateViewHolder(ViewGroup parent, int viewType) 判断使用哪一种布局
4、最后在onBindViewHolder(RecyclerView.ViewHolder holder, int position)绑定数据
5、定义对应的ViewHolder类
这样就可以设置动态布局了,另外监听器需要自己定义回调接口,这里就不赘述了。
Android动态改变recyclerview的item的布局
字数340 阅读6613 评论2 喜欢10大家都知道listview可以使用动态改变item布局。
@Override public int getItemViewType(int position) { return type; } @Override public int getViewTypeCount() { return number; }
当然recyclerview同样可以动态改变item布局
1、继承 RecyclerView.Adapter<RecyclerView.ViewHolder>
public class CommentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
2、重写 getItemViewType(int position)
/** * 决定元素的布局使用哪种类型 * * @param position 数据源的下标 * @return 一个int型标志,传递给onCreateViewHolder的第二个参数 */ @Override public int getItemViewType(int position) { return mDatas.get(position).getType(); }
3、在 onCreateViewHolder(ViewGroup parent, int viewType) 判断使用哪一种布局
/** * 渲染具体的ViewHolder * * @param parent ViewHolder的容器 * @param viewType 一个标志,我们根据该标志可以实现渲染不同类型的ViewHolder * @return */ @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { Log.e("terry", "viewType = " + viewType); View view = null; if (viewType == COMMENT_FIRST) { view = LayoutInflater.from(parent.getContext()).inflate(R.layout.comment_main_first, parent, false); return new CommentFirstHolder(view); } else if (viewType == COMMENT_SECOND) { view = LayoutInflater.from(parent.getContext()).inflate(R.layout.comment_main_second, parent, false); return new CommentSecondHolder(view); } return null; }
4、最后在onBindViewHolder(RecyclerView.ViewHolder holder, int position)绑定数据
@Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof CommentFirstHolder) { ...... } else if (holder instanceof CommentSecondHolder) { ...... } }
5、定义对应的ViewHolder类
//第一个ViewHolder public class CommentFirstHolder extends RecyclerView.ViewHolder { public CommentFirstHolder(View itemView) { super(itemView); } } //第二个ViewHolder public class CommentSecondHolder { public CommentSecondHolder(View itemView) { super(itemView); } }
这样就可以设置动态布局了,另外监听器需要自己定义回调接口,这里就不赘述了。
相关文章推荐
- Android动态改变recyclerview的item的布局
- android中关于如何动态改变include引入的布局的问题
- android 自定义VIew 动态在页面中改变页面的布局
- 【Android动态布局】之【使用addView方法时,如何保持已有动态控件位置不被改变】
- android中动态布局(动态加入TextView和ListView)
- android中使用selector动态改变imageView或ImageViewButton的背景
- 【Android多屏适配】动态改变Listview item高度
- android中的布局(三)ToggleButton的运用 实现布局的动态改变
- 关于某布局中动态添插入另一个view的报错
- android动态改变textView字体的颜色
- Android 动态布局 动态生成 销毁控件 改变控件的位置等
- android中使用selector动态改变imageView或ImageViewButton的背景
- android中 关于listitem 获得焦点时,改变其背景
- android:自定义layout动态改变view位置和大小
- Android中关于布局文件延迟加载控件ViewStub
- Android动态改变TextView字体颜色
- android中使用selector动态改变imageView或ImageViewButton的背景
- android selector动态改变imageView或ImageViewButton
- Android动态改变TextView字体颜色
- Android中动态改变ImageView大小