android - getItemViewType() - 如何返回一个 int 值

标签 android types android-recyclerview

我想实现一个具有多种 View 类型的 RecyclerView。因此,我在适配器类中使用了 getItemViewType() 方法:

    @Override
    public int getItemViewType(int position) {
        return mItems.get(position).getType();
    }

现在,我收到以下错误:

Incompatible types. Required int. Found String.

我知道:这是因为 getType() 方法返回的是 String 而不是 int。

问题:如何返回一个 int ?

最佳答案

您必须将该 String“转换”为 Integer 值。

public class CustomAdapter {

    private static final int VIEW_TYPE_DEFAULT = 0;
    private static final int VIEW_TYPE_1 = 1;
    private static final int VIEW_TYPE_2 = 2;
    private static final int VIEW_TYPE_3 = 3;
    private static final int VIEW_TYPE_4 = 4;

    @Override
    public int getItemViewType(int position) {
        String typeString = mItems.get(position).getType();
        switch (typeString) {
            case "STRING1":
                return VIEW_TYPE_1;
            case "STRING2":
                return VIEW_TYPE_2;
            case "STRING3":
                return VIEW_TYPE_3;
            ....
            default:
                return VIEW_TYPE_DEFAULT;
        }
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
        switch (getItemViewType(position)) {
            case VIEW_TYPE_1;
                //bind viewtype 1
                break;
            case VIEW_TYPE_2;
                //bind viewtype 2
                break;
            case VIEW_TYPE_3;
                //bind viewtype 3
                break;
                ....
            default:
                // Bind default view
        }
    }
}

关于android - getItemViewType() - 如何返回一个 int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974518/

相关文章:

android - 禁用 EditText 但接收触摸/点击事件

android - 如何实现室内地图

module - 在模块中使用 'with type' 构造时放宽类型检查

arrays - TypeScript 函数数组

android - ConstraintLayout 内容形状在滚动时改变

android - 将 Google Docs OCR 用于 Android 上的其他内容

java - 如何将泛型类型绑定(bind)到在层次结构中几乎完全分离的 2 种类型

java - 使用 recyclerview 和 firebase 时出现错误 : Adapter not attached, 跳过布局到类

android - 如何为不同的布局使用相同的 RecyclerView Adapter

Android Camera2 API - 检测何时获得焦点