我有一个listView。我需要每个列表项的自定义视图,所以我创建了一个自定义ListAdapter,它给出了视图,其布局如下所示。但是如何使用RemoteViews将此listAdapter设置为窗口小部件中的ListView?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/background_light"
android:layout_margin="1sp"
android:padding="10sp"
>
<TextView
android:id="@+id/widgetInfo1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/listItemDummy"
android:textColor="@android:color/black"
/>
<TextView
android:id="@+id/widgetInfo2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/listItemDummy"
android:textColor="@android:color/black"
/>
</LinearLayout>
答案 0 :(得分:3)
而不是公共Adapter
,而RemoteViews
则需要实施RemoteViewsFactory
。要返回自定义RemoteView
(是的,每个项目RemoteView
而不是View
),您需要覆盖其getViewAt(int position)
方法。
另外,对于setAdapter()
,RemoteView
只是RemoteViewsFactory
,您需要提供一个RemoteViewsService
,它会在RemoteView
以上返回给客户。
最后,对于要显示Intent
的客户,您传递{{1}}此服务。
您需要在清单文件中声明服务及其意图。这将使您的应用程序成为远程列表的提供者,例如其他应用程序或任何远程进程的视图。