在CardScrollView中使用自定义卡?

Jen*_*fer 2 google-glass google-gdk

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

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

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

谢谢!

这是我到目前为止尝试过的代码(它在Activity的onCreate方法中)

setContentView(R.layout.activity_menu_top);

viewCards = new ArrayList<RelativeLayout>();
TextView tv;

RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout_menutop);

tv = (TextView) layout.findViewById(R.id.textSectionTitle);
tv.setText("Appetizers");
tv = (TextView) layout.findViewById(R.id.textPreviousItem);
tv.setText("");
tv = (TextView) layout.findViewById(R.id.textNextItem);
tv.setText("Entress >");
viewCards.add(layout);

   //repeat that last chunk a bunch of times

menuCSV = new CardScrollView(this);
menuCSV.setOnItemClickListener(this);
adapter = new MenuCardScrollAdapter();
menuCSV.setAdapter(adapter);
menuCSV.activate();

setContentView(menuCSV);
Run Code Online (Sandbox Code Playgroud)

我正在引用的'TextView'ID是我在布局xml中定义的'RelativeLayout'的子视图.我已经尝试了上面的代码的一些变化,我很难找出获取和设置这些元素的正确方法,然后将它们作为'CardScrollAdapter'的单个对象粘贴在List中.我敢肯定这应该是非常简单但我无法弄清楚我错过了什么.

再次感谢!

Ton*_*ato 5

在不知道你的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);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您有少量固定卡(例如,如果您使用滚动条,如带有固定选项的菜单),则此方法很好.如果您使用更多动态卡片,其内容和数量可能会因其他因素而异,您可能需要考虑对内部布局进行充气和填充,getView而不是预先对其进行预充气.这样,只有用户当前正在查看的视图位于内存中(并且每侧都有一对,以便更快地滚动),但是在需要之前不会加载其余视图以便更好地保存资源.

  • 原始帖子中的代码是否都采用相同的方法?如果是这样,看起来你多次调用`setContentView`,这将导致问题,因为它设置了整个活动的布局.听起来你想要做的就是调用`getLayoutInflater()`来获取`LayoutInflater`服务,然后调用它的`inflate`方法将你的XML资源转换为视图层次结构.为每张卡调用一次该方法将为您提供独立的视图层次结构,因此您可以将各个字段设置为不同的值,然后将顶级视图放入适配器. (2认同)