Как сделать виджет прокручиваемым под Android 4.0? - PullRequest
0 голосов
/ 19 января 2012

У меня есть рабочий до 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, где я могу подключить логику для сопоставления данных элемента со свойствами представления элемента?Любой пример кода, который делает подобное сопоставление?

...