如何在Android 4.0下使小部件可滚动?

时间:2012-01-18 20:12:33

标签: android android-widget android-4.0-ice-cream-sandwich remoteview

我有一个工作的Android 4小部件,显示了一个项目列表。每个项目都有一个颜色补丁,显示三种颜色之一和文本,其颜色和样式由应用程序数据的属性决定。该列表实现为垂直LinearLayout,但我想将其转换为ListView,以使小部件在ICS中可滚动。在使用ListView时,我无法弄清楚如何将基础项数据属性映射到项目远程视图。

(以下代码已简化)。

项目数据类是

class ItemData {
   String text;
   int textColor;
   int patchColor;
}

小部件顶部布局

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget_top_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >    
    <LinearLayout
        android:id="@+id/widget_item_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        // Items are added here at runtime by my widget provider class.
    </LinearLayout>    
</FrameLayout>

每个项目视图都使用此布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >    
    <FrameLayout
        android:id="@+id/widget_item_color"
        // background color is set at runtime by the widget provider based
        // on patchColor member of the item data.
        android:layout_width="6dip"
        android:layout_height="fill_parent"
         >
    </FrameLayout>

    <TextView
        android:id="@+id/widget_item_text_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        // Actual color is set at runtime by the widget provider based on 
        // item data.
        android:textColor="@color/color_place_holder"
        android:background="@android:color/transparent"
        // May be set at runtime to false, based on user's prefernces.
        android:singleLine="true"
        android:scrollHorizontally="false"
        android:ellipsize="end"
        >
    </TextView>     
</LinearLayout>

我的问题是,如果我将顶部布局中的LinearLayout更改为ListView,我在哪里插入逻辑以将项目数据映射到项目视图属性?任何进行类似映射的示例代码?

0 个答案:

没有答案