android - Recyclerview 显示不同的 View 类型

标签 android android-recyclerview

我正在使用 recycleview 来显示一个列表。我想知道我们如何显示不同类型的 View ?就像,不同的 ViewHolders 在同一个适配器中

在我们使用getItemViewType()的简单listview中,recycleview有什么不同吗?

最佳答案

要创建具有多种 View 类型的 RecyclerView,只需实现 getItemViewType(),两个不同的 ViewHolder 并注意 viewType onCreateViewHolder()bindViewHolder() 中的 参数。

简短示例:

public class MultipleViewTypesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private static final int VIEW_TYPE_FIRST  = 0;
    private static final int VIEW_TYPE_SECOND = 1;

    class ViewHolderFirst extends RecyclerView.ViewHolder {
        ...
    }

    class ViewHolderSecond extends RecyclerView.ViewHolder {
        ...
    }

    @Override
    int getItemViewType(int position) {
        return position % 2;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        switch (viewType) {
            case VIEW_TYPE_FIRST: return new ViewHolderFirst(...);
            case VIEW_TYPE_SECOND: return new ViewHolderSecond(...);
            ...
        }
    }

    @Override
    public void bindViewHolder(RecyclerView.ViewHolder holder, int position) {
        switch (getItemViewType(position)) {
            case VIEW_TYPE_FIRST:
                ViewHolderFirst viewHolderFirst = (ViewHolderFirst)holder;
                ...
                break;
            case VIEW_TYPE_SECOND:
                ViewHolderSecond viewHolderSecond = (ViewHolderSecond)holder;
                ...
                break;
            ...
        }
    }
}

关于android - Recyclerview 显示不同的 View 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27041178/

相关文章:

android - 自定义 View 不膨胀

java - 在 RecyclerView 中滚动后 EditText 丢失内容

java - 在 Recycler Adapter 中获取 Activity onDestroy()

java - Android 中的多个回收 View

Android:测试用例有没有命名规则

win7 virtualbox 无法识别 Android 设备

javascript - Cordova 使用 SplashScreen 插件在另一个文件夹中查找 cordova_plugins.js

android - 在android中将数据发布到webview

android - 在 android 中,在 recyclerView 中准确显示按钮所在的弹出窗口

android - 如何在基于 RecyclerView 的 Android 应用程序上实现多重过滤?