Google glass 在CardScrollView中使用自定义卡?

Google glass 在CardScrollView中使用自定义卡?,google-glass,google-gdk,Google Glass,Google Gdk,我正在使用CardScrollView在沉浸式应用程序中呈现一堆内容,我不想使用标准卡,因为我想更多地控制布局 我有一个xml布局文件,它定义了我想要的布局,但是我很难在代码中创建这个布局的本地实例,这样我就可以获取/设置它的组件,并将它们添加到我的卡滚动适配器列表中 有没有人这样做过,或者知道我在哪里可以找到一个例子、教程或者其他什么 谢谢 以下是我迄今为止尝试过的代码(在活动的onCreate方法中) setContentView(R.layout.activity\u菜单\u顶部); vi

我正在使用
CardScrollView
在沉浸式应用程序中呈现一堆内容,我不想使用标准
卡,因为我想更多地控制布局

我有一个xml布局文件,它定义了我想要的布局,但是我很难在代码中创建这个布局的本地实例,这样我就可以获取/设置它的组件,并将它们添加到我的卡滚动适配器列表中

有没有人这样做过,或者知道我在哪里可以找到一个例子、教程或者其他什么

谢谢

以下是我迄今为止尝试过的代码(在活动的onCreate方法中)

setContentView(R.layout.activity\u菜单\u顶部);
viewCards=newarraylist();
文本视图电视;
RelativeLayout布局=(RelativeLayout)findViewById(R.id.layout\u菜单顶部);
tv=(TextView)layout.findViewById(R.id.textSectionTitle);
tv.setText(“开胃菜”);
tv=(TextView)layout.findViewById(R.id.textPreviousItem);
tv.setText(“”);
tv=(TextView)layout.findViewById(R.id.textNextItem);
tv.setText(“Entress>”);
添加(布局);
//把最后一段重复几次
menuCSV=新的CardScrollView(此);
menuCSV.setOnItemClickListener(此);
adapter=new MenuCardScrollAdapter();
菜单设置适配器(适配器);
menuCSV.activate();
setContentView(menuCSV);
我引用的“TextView”ID是我在布局xml中定义的“RelativeLayout”的子视图。我在上面的代码上尝试了一些变体,但我很难找到正确的方法来获取和设置这些元素,然后将它们作为“CardScrollAdapter”的单个对象粘贴到列表中。我相信这应该很简单,但我不知道我遗漏了什么


再次感谢

在不知道您的
CardScrollAdapter
是什么样子的情况下,一般的想法是这样做:您可以创建
CardScrollAdapter
的子类,该子类在其构造函数中获取视图列表,然后在
getView
中返回相应的视图:

private class YourCardScrollAdapter extends CardScrollAdapter {

    private List<RelativeLayout> mViews;

    public YourCardScrollAdapter(List<RelativeLayout> views) {
        mViews = views;
    }

    // ...other methods...

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return mViews.get(position);
    }
}
私有类YourCardScrollAdapter扩展了CardScrollAdapter{
私有列表视图;
公共YourCardScrollAdapter(列表视图){
mViews=视图;
}
//…其他方法。。。
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
返回mViews.get(位置);
}
}

如果您有少量固定卡(例如,如果您使用滚动条,就像使用带有固定选项集的菜单一样),这种方法就可以了。如果您使用的动态卡的内容和数量可能因其他因素而不同,那么您可能需要考虑在代码> > GETVIEW < /代码>内填充和填充布局,而不是预先对它们进行膨胀。这样,只有用户当前查看的视图在内存中(每侧各有一对视图,以加快滚动速度),但其余视图在需要时才会加载,以便更好地节约资源。

能否发布您用于CardScrollView的代码?谢谢您的评论,但我不认为适配器是问题所在(您所建议的是我已经拥有的)。问题似乎在于获取布局xml资源。如果我不使用它来设置我的卡,一切都会正常运行(尽管它看起来很糟糕,因为我没有设置任何布局参数)。当我尝试用xml设置布局及其组件时,我会遇到各种运行时异常,因为它找不到资源,或者不喜欢我如何设置它们。关于如何获取版面资源以供活动以外的其他人使用,您的原始帖子中的代码是否都使用相同的方法?如果是这样,看起来您多次调用了
setContentView
,这将导致问题,因为这将设置整个活动的布局。听起来您想要做的是调用
getLayoutInflater()
来获取
LayoutInflater
服务,然后调用其
inflate
方法将XML资源转换为视图层次结构。为每张卡调用该方法一次将为您提供独立的视图层次结构,以便您可以将各个字段设置为不同的值,然后将顶级视图放入适配器中。
private class YourCardScrollAdapter extends CardScrollAdapter {

    private List<RelativeLayout> mViews;

    public YourCardScrollAdapter(List<RelativeLayout> views) {
        mViews = views;
    }

    // ...other methods...

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return mViews.get(position);
    }
}