android - 具有不同卡片布局的 RecyclerView

标签 android android-cardview android-recyclerview

我想做什么


目前我正在使用 RecyclerViewCardView。现在我写了一个 RecyclerView.Adapter,我可以在上面多次显示相同的 CardView 和不同的内容——类似于带有 BaseAdapterListView .

现在我想用不同的 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/

相关文章:

android - 这是一个错误 E/Surface : getSlotFromBufferLocked: unknown buffer: 0xa2ae2310?

java - Android - 学习 Java

android - 如何动态扩展 ListView 高度 android?

android - 将相机图片传递给 OpenCV 时出现 OutOfMemoryException

android - 支持:CardView minimum SDK?

Android Kotlin : java. lang.IllegalStateException

android - RecyclerView with GridLayoutManager in RecyclerView with LinearLayoutManager

java - CardView 列表不在我的应用程序中滚动

android - Groupie Recycler查看添加到同一可扩展项目的所有项目

java - 带 Firestore : [CustomClassMapper]: No setter/field for class Android