android – RecyclerView与不同的Cardlayouts

前端之家收集整理的这篇文章主要介绍了android – RecyclerView与不同的Cardlayouts前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想做什么

目前我正在玩RecyclerView和CardView.现在我写了一个RecyclerView.Adapter,我可以使用不同的内容多次显示相同的CardView – 与使用BaseAdapter的ListView类似.

现在我想用不同的CardView-Layout(以Google Now的风格)编写一个RecyclerView.我已经搜索了教程,但没有发现关于该主题的任何有用的东西.有人知道,这需要如何实施?需要做些什么来实现呢?

解决方法

要实现你想要的,你需要覆盖你的RecyclerView.Adapter getItemViewType(position),在哪里你会返回一个int告诉你什么样的视图将用于表示这个位置.

接下来,您将在createViewHolder (parent,viewType)上创建不同的ViewHolders,它将在您的情况下保留对每个不同CardLayout的引用.

然后在bindViewHolder(holder,position),您可以创建一个switch语句,否则的话可以通过您的可能视图列表并填写数据.

以下示例代码

@H_301_16@public GeneralViewHolder onCreateViewHolder(ViewGroup viewGroup,int viewType) { GeneralViewHolder holder; View v; Context context = viewGroup.getContext(); if (viewType == FIRST_TYPE) { v = LayoutInflater.from(context) .inflate(R.layout.first_card,viewGroup,false); holder = new FirstTypeViewHolder(v); //Of type GeneralViewHolder } else { v = LayoutInflater.from(context) .inflate(R.layout.second_card,false); holder = new SecondTypeViewHolder(v); } return holder; } public void onBindViewHolder(GeneralViewHolder viewHolder,int i) { if(getItemViewType(i)==FIRST_TYPE) { FirstTypeViewHolder holder1 = (FirstTypeViewHolder)viewHolder; } else { SecondTypeViewHolder holder1 = (SecondTypeViewHolder)viewHolder; } } public int getItemViewType (int position) { //Some logic to know which type will come next; return Math.random()<0.5 ? FIRST_TYPE : SECOND_TYPE; }

猜你在找的Android相关文章