android - 可以在 Android 的 RecyclerView 中定义部分吗?

标签 android ios uitableview android-recyclerview

在 iOS 中,UITableView 可以有“部分”并在部分“行”内。这在 Android 中是否可以通过 RecycleView 实现?

RecyclerView.Adapter 只有一个 getItemCount() 委托(delegate)方法。但部分没有。您可以建议哪些替代方案?

我想将节标题排成一行,并将这些节合并为一个全局节,这样就不需要任何节了。有更好的主意吗?

最佳答案

RecyclerView.Adapter 支持多种开箱即用的 View 类型。您想在任何特定位置显示哪种项目类型取决于您。您可以轻松地使用它来创建部分,例如,如果您定义两个项目类型 TYPE_HEADER 和 TYPE_ITEM:

@Override
public int getItemViewType(int position) {
    if (isHeader(position)) {
        return TYPE_HEADER;
    } else {
        return TYPE_ITEM;
    }
}

然后,您可以使用 onCreateViewHolder 来扩充适当的布局,并使用 onBindViewHolder 来利用它。

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    if (viewType == TYPE_HEADER) {
        View v = ... ; // inflate here
        return new HeaderViewHolder(v);
    } else {
        View v = ... ; // inflate here
        return new ItemViewHolder(v);
    }    
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    if (holder instanceof HeaderViewHolder) {
        // handle header
    } else if (holder instanceof ItemViewHolder {
        // handle item
    }
}

剩下的唯一的事情就是保存东西的数据结构。有很多方法可以实现它,我认为这有点超出了您的问题范围。如果数据结构非常深,我更喜欢使用我不久前制作的自定义树状结构,但有时我使用平面 List 并使用 instanceof 检查项目类型。

关于android - 可以在 Android 的 RecyclerView 中定义部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39227570/

相关文章:

ios - UICollectionViewCell 子类 init 从不运行

ios - 自定义 UITableViewCell 按钮和 RowSelected (iOS/Monotouch)

android - google+ 是如何实现这种布局的?

ios - 如果我使用 iPad 尺寸创建我的应用程序,如何找到 iPhone 尺寸的 'safe region'?

iphone - 在Objective-C中,与类方法相比,拥有单例有什么优势?

ios - UITableViewCell 高度问题

ios - 在 indexPath 的 didselectrow 上选择取消选择行时崩溃

java - 使用 Android Volley 发送图像或文本或两者

android - 我可以使用 Firebase 存储进行在线音乐流式传输吗?

android - 在改造 2.0 中处理 JSON 响应