如何设置自定义ListAdapter列表appwidget中的视图?

时间:2013-02-09 05:59:40

标签: android android-listview android-adapter remoteview

我有一个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>

1 个答案:

答案 0 :(得分:3)

而不是公共Adapter,而RemoteViews则需要实施RemoteViewsFactory。要返回自定义RemoteView(是的,每个项目RemoteView而不是View),您需要覆盖其getViewAt(int position)方法。

另外,对于setAdapter()RemoteView只是RemoteViewsFactory,您需要提供一个RemoteViewsService,它会在RemoteView以上返回给客户。

最后,对于要显示Intent的客户,您传递{{1}}此服务。

您需要在清单文件中声明服务及其意图。这将使您的应用程序成为远程列表的提供者,例如其他应用程序或任何远程进程的视图。