具有不同卡片布局的 RecyclerView

2024-02-28

我想做的事


此刻我正在玩RecyclerView and CardView的。现在我写了一个RecyclerView.Adapter我可以在上面多次显示不同内容的相同 CardView - 类似于ListView with a BaseAdapter.

现在我想写一个RecyclerView与不同的CardView-Layout的(采用 Google Now 的风格)。我已经搜索过教程,但没有找到有关该主题的任何有用信息。有人知道这需要如何实施吗?为了实现这一点需要做什么?


为了实现你想要的,你需要重写getItemViewType(position) https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#getItemViewType%28int%29在你的RecyclerView.Adapter,您将在其中返回int告诉你将使用什么样的视图来表示这个立场。

接下来你将创建不同的ViewHolders on createViewHolder (parent,viewType) https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#createViewHolder%28android.view.ViewGroup,%20int%29这将保留对您的案例中每个不同 CardLayout 的引用。

Then on bindViewHolder(holder, position) https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#bindViewHolder%28VH,%20int%29您可以创建一个 switch 语句或 if else 情况来浏览可能的视图列表并用数据填充它们。

示例代码如下:

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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有不同卡片布局的 RecyclerView 的相关文章

随机推荐