我正在尝试在“控件类”的Sony Smartwatch 2中显示列表。我做的和TextView一样:

//准备一个包以更新文本。
        Bundle bundle1 = new Bundle();

    bundle1.putInt(Control.Intents.EXTRA_LAYOUT_REFERENCE, R.id.text);
    bundle1.putString(Control.Intents.EXTRA_TEXT, "Helloooooo");


这样做很好,但是我不知道如何为ListView做到这一点,这是行不通的:

    String[] values = new String[] { "Android", "iPhone",
          "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7",
          "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X",
          "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2",
          "Android", "iPhone", "WindowsMobile" };

    final ArrayList<String> list = new ArrayList<String>();
    for (int i = 0; i < values.length; ++i) {
        list.add(values[i]);
        }
    final StableArrayAdapter adapter = new StableArrayAdapter(this,android.R.layout.simple_list_item_1, list);

    // Prepare a bundle to update the button text.
    Bundle bundle1 = new Bundle();

    bundle1.putInt(Control.Intents.EXTRA_LAYOUT_REFERENCE, R.id.list);
    bundle1.putStringArray(Control.Intents.EXTRA_DATA, values);


请帮助我:S,我认为是这样的:

        Bundle b = new Bundle();
        b.putInt(Control.Intents.EXTRA_DATA_XML_LAYOUT,
            R.layout.smartwatch2_item);
        b.putInt(Control.Intents.EXTRA_LIST_ITEM_ID, i);
        b.putInt(Control.Intents.EXTRA_LIST_ITEM_POSITION, i);
        b.putParcelableArray(Control.Intents.EXTRA_LAYOUT_DATA, views);

最佳答案

SmartWatch的ListView的项目只能通过sendListItem(ControlListItem item)发送。通常,在onRequestListItem回调中调用sendListItem。调用sendListCount和sendListPosition时将调用onRequestListItem。

因此,不应通过适配器发送项目,而应调用sendListCount和sendListPostion。

ControlListItem具有dataXmlLayout和layoutData。 dataXmlLayout应该是项目的布局。 layoutData应该是bundle数组。

public void onResume(int layoutReference, int listItemPosition) {
    showLayout(YOUR_LAYOUT_HAS_LIST_VIEW);
    sendListCount(values.length);
    sendListPosition(YOUR_LIST_VIEW, 0);
}
public void onRequestListItem(int layoutReference, int listItemPosition) {
    ControlListItem item = new ControlListItem();
    item.layoutReference = layoutReference;
    item.dataXmlLayout = android.R.layout.simple_list_item_1;
    item.listItemId = listItemPosition;
    item.listItemPosition = listItemPosition;
    item.layoutData = new Bundle[1];
    item.layoutData[0] = new Bundle();
    item.layoutData[0].putInt(Control.Intents.EXTRA_LAYOUT_REFERENCE, android.R.id.text1);
    item.layoutData[0].putString(Control.Intents.EXTRA_TEXT, values[listItemPosition]);
    sendListItem(item);
}


请注意,SmartWatch的布局支持有限。

08-27 09:55