RemoteViews类

RemoteViews

顾名思义,它是一个远程视图。App Widget中的视图,都是通过RemoteViews表现的。

在RemoteViews的构造函数中,通过传入layout文件的id来获取 “layout文件对应的视图(RemoteViews)”;然后,调用RemoteViews中的方法能对layout中的组件进行设置(例如,可以调用setTextViewText()来设置TextView组件的文本,可以调用setOnClickPendingIntent() 来设置Button的点击响应事件)。

因此,我们可以将 “RemoteViews 看作是 layout文件中所包含的全部视图的集合”。

RemoteViewsService

RemoteViewsService,是管理RemoteViews的服务。

一般,当App Widget 中包含“GridView、ListView、StackView等”集合视图时,才需要使用RemoteViewsService来进行更新、管理。(集合视图是指GridView、ListView、StackView等包含子元素的视图)

RemoteViewsService更新“集合视图”的一般步骤是:

(01) 通过setRemoteAdapter来设置 “RemoteViews对应RemoteViewsService”。

(02) 之后在RemoteViewsService中,实现RemoteViewsFactory接口。然后,在RemoteViewsFactory接口中对“集合视图”的各个子项进行设置(“集合视图”的各个子项:例如,GridView的每一个格子都是一个子项;ListView中的每一列也是一个子项)。

因此,我们可以将 “RemoteViewsService 看作是 管理layout中集合视图的服务”。

 RemoteViewsFactory

通过RemoteViewsService中的介绍,我们可以了解“RemoteViewsService是通过RemoteViewsFactory来具体管理layout中集合视图的”,即“RemoteViewsFactory管理集合视图的实施者”。

RemoteViewsFactory是RemoteViewsService中的一个接口。RemoteViewsFactory提供了一系列的方法管理“集合视图”中的每一项。例如:

(01)RemoteViews getViewAt(int position)

通过getViewAt()来获取“集合视图”中的第position项的视图,视图是以RemoteViews的对象返回的。

(02)int getCount()

通过getCount()来获取“集合视图”中所有子项的总数。

因此,我们可以将 “RemoteViewsFactory 看作是 layout中集合视图管理的具体实施者”。

你可能感兴趣的:(RemoteViews类)