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语句,否则的话可以通过您的可能视图列表并填写数据.

以下示例代码

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相关文章