RemoteViewsFactory 如何处理 Android 中的 ViewTypes?

Posted

技术标签:

【中文标题】RemoteViewsFactory 如何处理 Android 中的 ViewTypes?【英文标题】:How does RemoteViewsFactory handle ViewTypes in Android? 【发布时间】:2018-11-04 13:29:45 【问题描述】:

由于 RemoteViewFactory 中没有 getItemViewType() 方法 - 它实际上是如何确定 ViewType 的?

我刚刚偶然发现了一个案例,我肯定只有 4 个视图类型,但不断收到显示错误(一个项目的“正在加载...”)和一个日志条目,我将返回比 @987654322 更多的视图类型@ 建议。所以我随机添加了+1,现在它可以工作了。

所以在我看来,实际的 viewType 是由底层 ListAdapter/AppWidgetHost 猜到的,如果您对 RemoteViews 实例进行大量修改,它会将其检测为新的 viewType...

有谁知道实际发生了什么?

【问题讨论】:

【参考方案1】:

好的,这是问题的答案(取自android sources of RemoteViewsListAdapter):

for (RemoteViews rv: mRemoteViewsList) 
        if (!mViewTypes.contains(rv.getLayoutId())) 
            mViewTypes.add(rv.getLayoutId());
        
    
    if (mViewTypes.size() > mViewTypeCount || mViewTypeCount < 1) 
        throw new RuntimeException("Invalid view type count -- view type count must be >= 1" +
                "and must be as large as the total number of distinct view types");
    

所以 Android 使用 LayoutId 作为 viewTypeReference。让我在我的应用中进行一些研究,但回答了我的问题。

【讨论】:

以上是关于RemoteViewsFactory 如何处理 Android 中的 ViewTypes?的主要内容,如果未能解决你的问题,请参考以下文章

Python如何处理Excel表格?良心推荐!

如何处理ORA-01591 错误?

如何处理片段和活动中的后压

SSIS 如何处理column的nullability

如何处理 MongoDB / Morphia 中的查询迁移?

ubuntu忘记管理员密码如何处理?