我正在尝试在“控件类”的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的布局支持有限。