我没有找到任何解释视图类型的内容,它必须用来区分视图以便在有多个视图时显示,在这种情况下,可以使用传递给onCreateViewHolder的viewType:
onCreateViewHolder(ViewGroup parent,int viewType)
虽然存在getItemViewType方法,但没有setItemViewType方法。
因此,看来View Type是由Android设置的,只有某些类型。
什么是原生类型及其价值?我无法在Android的文档中找到任何定义这些原生代码的内容。
如何定义各种视图,例如一个recyclerview是否应该具有红色背景?我已经创建了一个布尔值来标识应该以不同方式显示的对象,但是onCreateViewHolder除了ViewGroup和int之外不接受任何其他内容,似乎没有办法做到这一点,但显然其他人也这样做。
我根本不了解“查看类型”,并希望得到一个很好的解释。例如,从Android API指南中获取getItemViewType的返回值:
"整数值,用于标识表示位置项目所需的视图类型。类型代码不必是连续的。"
这甚至意味着什么?我还没有发现任何可以解释它来自何处或如何设置的内容,甚至可以设置它。
答案 0 :(得分:1)
```
/// Inside the RecyclerView.Adapter code:
const VIEW_TYPE_BLUE = 0;
const VIEW_TYPE_RED = 1;
getItemViewType(int position) {
return position % 2;
}
onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType === VIEW_TYPE_BLUE) {
// create blue view.
} else {
// create red view.
}
}
```
这将允许您进行各种自定义。例如,如果您在RecyclerView的最顶部有一个header
视图,那就很容易了。
答案 1 :(得分:1)
ViewType由您定义。它基本上是一个枚举。如果所有项目都具有相同的视图,则可以忽略它并为getItemViewType返回1。如果您对不同的项目有不同的视图,则只需为每个视图返回一个唯一值。
每个值都无关紧要 - Android不知道或不关心。它只是将它用作哈希查找中的键,以告知要回收的视图类型