我正在尝试为使用ListView
显示列表的Glass构建一个活动卡。用谷歌眼镜的话说,这是一个高频的实时卡。我试过使用一个普通的ListView
以及那些从这里的例子。我也尝试过使用ArrayAdapter
和SimpleAdapter
,但在每种情况下,当卡被渲染时,没有数据出现。
我需要做什么更改才能显示列表项?
我的实时卡片渲染器有一个draw()
方法在一个固定的间隔被调用,它包含以下内容:
Canvas canvas;
try {
canvas = mHolder.lockCanvas();
} catch (Exception e) {
return;
}
if (canvas != null) {
string[] from = new String[] {"col1", "col2"};
List<Map<String, String>> fillMaps = new ArrayList<Map<String, String>>();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.grid_item, from);
mScroll.setAdapter(adapter);
mLayout.invalidate();
mLayout.draw(canvas);
canvas.save();
mHolder.unlockCanvasAndPost(canvas);
}
我的视图是一个LinearLayout
,其中包含一个ListView:
<ListView
android:id="@+id/orders_list"
android:layout_width="fill_parent"
android:layout_height="350dp"
android:layout_marginLeft="5dp"
android:background="@android:color/holo_blue_light"
android:divider="@null"
android:listSelector="@android:color/transparent" />
,每一行的布局定义为
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView
android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textSize="30sp"/>
</LinearLayout>
我已经成功地在Activity
中显示了ListView
,然后显示了该活动,但这不是我想在这种情况下做的。我也尝试过使用"低频"渲染方法创建活卡(使用RemoteView
),但再次,没有显示。在这个例子中,你得到的只是一个蓝色的框(我已经将背景颜色设置为ListView
,这样我就可以看到它占据了视图的哪个区域)。
我的问题是:是否有一个bug在玻璃渲染框架,这是阻止数据行被显示?如果不是,上面的例子有什么问题?是否有任何包含列表的卡片的例子可供我参考?
将此标记为已回答,因为它将在稍后的玻璃更新中解决。