具有 DataBinding 的 RecyclerView 通用适配器

2024-01-12

我使用 DataBinding 为 RecyclerView 创建了通用适配器。这是小代码片段

public class RecyclerAdapter<T, VM extends ViewDataBinding> extends RecyclerView.Adapter<RecyclerAdapter.RecyclerViewHolder> {
private final Context context;
private ArrayList<T> items;
private int layoutId;
private RecyclerCallback<VM, T> bindingInterface;

public RecyclerAdapter(Context context, ArrayList<T> items, int layoutId, RecyclerCallback<VM, T> bindingInterface) {
    this.items = items;
    this.context = context;
    this.layoutId = layoutId;
    this.bindingInterface = bindingInterface;
}

public class RecyclerViewHolder extends RecyclerView.ViewHolder {

    VM binding;

    public RecyclerViewHolder(View view) {
        super(view);
        binding = DataBindingUtil.bind(view);
    }

    public void bindData(T model) {
        bindingInterface.bindData(binding, model);
    }

}

@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent,
                                             int viewType) {
    View v = LayoutInflater.from(parent.getContext())
            .inflate(layoutId, parent, false);
    return new RecyclerViewHolder(v);
}

@Override
public void onBindViewHolder(RecyclerAdapter.RecyclerViewHolder holder, int position) {
    T item = items.get(position);
    holder.bindData(item);
}

@Override
public int getItemCount() {
    if (items == null) {
        return 0;
    }
    return items.size();
}
}

您可以在 Github 存储库中找到完整代码:Recyclerview-通用适配器 https://github.com/ravirupareliya/Recyclerview-Generic-Adapter

问题我面临的是使用通用适配器后RecyclerView加载时间增加,有一秒钟它显示设计时布局,然后加载原始数据。


你缺少的部分是binding.executePendingBindings() in bindData:

public void bindData(T model) {
    bindingInterface.bindData(binding, model);
    binding.executePendingBindings();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有 DataBinding 的 RecyclerView 通用适配器 的相关文章

  • 文件递归搜索

    我试图在根目录及其子目录中查找文件 步骤1 在指定路径中查找目录 步骤2 如果找到上述目录 则在其子目录之一中查找文件 为此 我使用下面的代码片段进行递归搜索 现在 这里的问题是 当它满足我的上述要求时 如何突破递归 boolean bFi
  • 如何扩展 Array 以获得泛型类型?

    我有一个链表类 声明如下 class LinkedNode
  • 在 Android strings.xml 文件中使用 HREF

    我正在尝试从 strings xml 文件中为 TextView android text 属性分配以下字符串 我无法让链接显示为可点击的超链接 有什么建议么 我尝试过以下技术
  • 如何使用 zXing 在 Android 中创建 IntentIntegrator

    我想创建一个对象IntentIntegrator在安卓中 IntentIntegrator integrator new IntentIntegrator ZBarReaderActivity this Here ZBarReaderAct
  • 无法从视图转换为按钮

    我在这里遇到非常令人沮丧的问题 我有这个代码 Button b findViewById android R id button1 我收到了这个错误 类型不匹配 无法将表单视图转换为按钮 但是按钮1is一个按钮 在我的 XML 布局文档中
  • 使用 Delphi 10.2.1 Tokyo 的模态 Android 对话框

    我有以下用于在 Android 上显示模式消息的 Delphi 代码 该代码在 10 1 Berlin 上运行良好 但在 Delphi 10 2 1 Tokyo 上停止运行 此过程现在会挂起 Android 应用程序 procedure c
  • Android Fragment 中的 SharedPreferences

    我正在尝试读取 Fragment 内的 SharedPreferences 我的代码用于获取任何其他活动中的首选项 SharedPreferences preferences getSharedPreferences pref 0 我收到错
  • 如何实现可运行队列

    我正在尝试实现一个可运行队列 在异步任务期间依次执行 意味着队列中的下一个将在另一个完成后执行 我编写了一个管理器来管理这些可运行对象和本身就是可运行对象的任务 然后 我获取异步任务中的第一个任务并运行它 希望它能够在队列中运行 但是它最终
  • 在 Android 的 Recycler View 中的文本视图背景上生成并设置随机颜色

    I am Trying to Generate Random Colors and set the Random color as background of Text View Just Like in GMail app The Tex
  • Android键盘点击搜索输入时出现和消失

    我在用谷歌地图 Js API当我搜索一个地方时 我的输入搜索栏工作正常 当我通过 iPhone 设备使用它时 它也工作得很好 但是当我通过Android 设备然后键盘立即出现和消失 我已经找到了一些关于当我按下搜索栏时 android 键盘
  • 设置 ViewGroup 的最大宽度

    如何设置 ViewGroup 的最大宽度 我正在使用一个Theme Dialog然而 当调整大小到更大的屏幕时 它看起来不太好 它也有点轻量级 我不希望它占据整个屏幕 I tried 这个建议 https stackoverflow com
  • 如果从超链接打开,应用程序将启动两次

    我正在开发一个应用程序 可以从多个地方启动 例如日历中的超链接 我在以下场景中面临问题 如果应用程序已启动并在后台运行 并且用户单击本机日历中的事件 超链接来启动应用程序 我的应用程序作为新实例启动两次 在正在运行的应用程序列表中 我可以看
  • XML 文档结构必须在同一实体内开始和结束

    我是 eclipse 的新手 我刚刚开始编写一些代码 实际上只是从网站复制并粘贴 谁能帮我解决这个问题 错误出现在最后一行
  • Android smoothScrollTo 不调用 onScrollStateChanged

    我在用smoothScrollBy 滚动到 a 中的特定位置ListView 我希望在以下情况时得到通知ListView完成滚动以将其与当前集成onScrollStateChanged 当用户用手指滚动时触发的事件 目前我正在使用Timer
  • DOM 中不再存在缓存元素

    就像在类似的问题中一样 我使用appium java 尝试选择元素 在移动应用程序中 我要转到页面 之后有许多元素 android widget ImageView 0 我需要选择 6 个 例如 这样的元素并执行其他步骤 Byt 只能选择一
  • startDrag 方法 已弃用且无法编译程序

    startDrag android content ClipData android view View DragShadowBuilder java lang Object int 已弃用 如何解决这个问题而又不失去对旧版本的兼容性 还有
  • 如何在清单文件中添加符合我意图的标志

    我们知道 我们可以使用 java 代码中的 addFlags 方法将一些标志添加到我们的意图中 有什么方法可以将这些标志添加到清单文件本身中 而不是用 java 代码编写 我需要为清单中的一项活动添加 REORDER TO FRONT 标志
  • API 24 AccessibilityService.dispatchGesture() 方法如何工作?

    通过 API 24 我们有了一种向设备发送手势的方法 但是目前还没有可靠的文档或示例 我正在尝试让它工作 但目前手势每次都会点击 onCancelled 回调 这是我调用该方法的代码 TargetApi 24 private void pr
  • 如何在运行时检查授予权限?

    In Android M 预览版 用户可以选择特定的应用程序并检索特定的权限 所以我问如何在运行时检查授予权限 您可以使用以下复制的代码https android googlesource com platform frameworks b
  • 在 Android 上提取/修改视频帧

    我有一个视频文件 我想获取视频的每一帧并对帧进行一些修改 例如在其中绘制另一个位图 放置一些文本等 Android 中是否有任何 API 框架可用于从视频中获取帧 我在 iOS 中使用他们的 AVFramework 做了类似的事情 如果可以

随机推荐

  • 向 Objective-C 添加“forCount”控制结构的最佳方法?

    Adam Ko 为这个问题提供了一个很好的解决方案 感谢 Adam Ko 顺便说一句 如果您像我一样喜欢 c 预处理器 处理 defines 的东西 您可能不知道 XCode 中有一个方便的东西 右键单击您的一个开源文件的主体 然后向下靠近
  • Vertex AI - 部署的模型预测与评估结果的预测不同

    我使用 AutoML 训练了一个多标签文本分类模型 然后 我部署了模型并尝试测试我们在模型注册表的评估选项卡中提供的一些输入 我遇到的问题是 我通过两种测试方法获得的预测输出值与模型注册表的评估选项卡中显示的输出值不匹配 我已经包含了一个此
  • 使用 LINQ 在 ASP.NET MVC 中传递数据 - 疯狂

    首先请允许我说 我是 ASP NET MVC 方面的高手 我喜欢它 但我是个n00b 我正在尝试从 LINQ 查询传回 复杂 数据 我了解如何使用数据上下文 然后在发送回数据时强制转换该数据 但是当我执行返回匿名类型的更复杂的 LINQ 查
  • 关于 PermissionEx (WIX) 的问题

    我是 WIX 新手 我正在使用 util PermissionEx 创建 ACL 我可以成功设置读 写 读和执行等权限 但找不到有关设置修改权限的任何信息 我尝试使用 Append 属性来实现此功能 这似乎是唯一可以实现所需功能的属性 但是
  • CSS 转换导致 div 在 Safari 中重叠?

    为什么transform rotateY 导致 div 仅在 Safari 中重叠 以下是一些屏幕截图 可以更好地解释 它应该是什么样子 它不应该是什么样子 仅出现在 Safari 中 这是非常奇怪的行为 我已经删除了transform r
  • Discord.py on_member_join 没有响应

    我正在使用一个 client event为我的功能on member join事件 我希望它在用户加入时发送消息 但是控制台没有响应或错误 这是我当前尝试的代码 client event async def on member join m
  • Java 中的 String[] args 有什么意义?

    每当您在类中声明 main 方法时 您总是必须执行String名为 args 的数组 重点是什么 除非我生活在岩石下 否则 Java 中的命令行参数几乎不再使用 当我尝试运行这个时 this program won t compile pu
  • C# 给定货币代码格式化货币(如 USD / GBP / FRF)

    我正在与返回货币的数据库集成 System Decimal 和货币代码 货币代码是类似的字符串 USD GBP 乃至 FRF mscorlib 是否有内置的东西可以帮助我格式化这些货币 我首先想到的是在数据库货币代码和CultureInfo
  • 使用 vscode 作为 sops 的编辑器

    我似乎无法得到sops跟 共事Visual Studio Code作为其编辑 vscode已经在PATH 然而 sops在控制台上打印解密的内容 而不是打开编辑器 c gt code this opens the Visual Studio
  • Node.js 子进程问题与参数 - 引号问题?,FFMPEG 问题?

    我需要能够从 Node js 应用程序执行 FFMPEG 我相信这个问题可能与正确指定命令行参数有关 而不是特定于 FFMPEG 但由于我无法缩小问题范围 所以我提出了我的整个问题 我可以执行以下命令从命令提示符成功 C Brad ffmp
  • 如何在 LaTeX 中对段落进行编号?

    给出一堆段落 Para A Para B Para C 如何让 LaTeX 自动对它们进行编号 即 1 Para A 2 Para B 3 Para C 我看过以下建议 newcounter parnum newcommand N noin
  • python 日志文件中的“无”

    我正在使用loggingpython 中的模块 当我在命令行上使用错误的参数调用脚本时 日志文件在某些 时候包含单个单词 None 我不知道它来自哪里 这是我的代码切割 我在其中执行logging exception Show script
  • 有时不会调用 UISplitViewControllerDelegate 中的 willHideViewController

    我有个问题 我的应用程序是一个选项卡栏控制器 它的第一个视图控制器是一个分割视图控制器 这对苹果来说似乎不太好 因为文件说分割的 voew 控制器必须是根 所以也许这就是我的问题的原因 问题是 有时 不会调用 UISplitViewCont
  • 如何在 Kendo 网格中自动启用或禁用滚动条?

    这是我创建网格的代码 if Model GenericEntityList Count gt 0 Html Kendo Grid Model GenericEntityList Name screenNames ToString Colum
  • python 中 select 的 CPU 使用率达到 100%

    我在 python 中的 select 有问题 我有一段代码允许客户端从服务器接收数据 并通过在 stdin 上读取并在服务器套接字上写入来发送数据 readfds s sys stdin writefds s sys stdout my
  • 了解 JMH 输出

    因此 我对几种方法运行了 JMH 基准测试 并得到了如下响应 我无法理解到底是什么Score and Error值表示 有相同的参考文档吗 举个例子 ss stream带参数n 100000花了约 平均运行 30 次迭代需要 1 363 微
  • 如果将 UIView 添加为子视图,则 UIButton 目标不起作用

    我有一个UIButton 它有两个子视图 然后我打电话 createButton addTarget self action selector openComposer forControlEvents UIControlEventTouc
  • Java 重新排序会影响 System.currentTimeMillis() 吗?

    根据Java内存模型 指令可以重新排序 只要执行格式良好的 http docs oracle com javase specs jls se7 html jls 17 html jls 17 4 7 所以我想知道 以下代码是否可能产生以下输
  • Spark聚合函数——aggregateByKey是如何工作的?

    假设我有一个分布在 3 个节点上的系统 并且我的数据分布在这些节点之间 例如 我有一个 test csv 文件 该文件存在于所有 3 个节点上 并且包含 2 列 row id c row1 k1 c1 row2 k1 c2 row3 k1
  • 具有 DataBinding 的 RecyclerView 通用适配器

    我使用 DataBinding 为 RecyclerView 创建了通用适配器 这是小代码片段 public class RecyclerAdapter