我想做什么
目前我正在使用 RecyclerView
和 CardView
。现在我写了一个 RecyclerView.Adapter
,我可以在上面多次显示相同的 CardView 和不同的内容——类似于带有 BaseAdapter
的 ListView
.
现在我想用不同的 CardView-Layout
编写一个 RecyclerView
(采用 Google Now 的风格)。我已经搜索过教程,但没有找到任何关于该主题的有用信息。有人知道,这需要如何实现?需要做什么才能实现这一点?
最佳答案
要实现您想要的效果,您需要覆盖 getItemViewType(position)
在您的 RecyclerView.Adapter
上,您将返回一个 int
告诉您将使用哪种 View 来表示此位置。
接下来您将在 createViewHolder (parent,viewType)
上创建不同的 ViewHolders
这将在您的案例中保留对每个不同 CardLayout 的引用。
然后 bindViewHolder(holder, position)
您可以创建一个 switch 语句或 if else case 来遍历您的可能 View 列表并用数据填充它们。
示例代码如下:
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, viewGroup, 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 - 具有不同卡片布局的 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28110033/