我正在使用CardScrollView
在沉浸式应用中展示一堆内容,我不想使用标准Card
,因为我希望更多地控制布局。< / p>
我有一个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);
我正在引用的'TextView'ID是我在布局xml中定义的'RelativeLayout'的子视图。我在上面的代码中尝试了一些变化,我无法找出获取和设置这些元素的正确方法,然后将它们作为'CardScrollAdapter'的单个对象粘贴在List中。我敢肯定这应该是非常简单但我无法弄清楚我错过了什么。
再次感谢!
答案 0 :(得分: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);
}
}
如果您使用少量固定卡(例如,如果您使用带有固定选项的菜单的滚动条),则此方法很好。如果您使用的动态卡片的内容和数量可能因其他因素而异,您可能需要考虑在getView
内填充和填充布局,而不是预先对其进行预膨胀。这样,只有用户当前正在查看的视图位于内存中(并且每侧都有一对,以便更快地滚动),但是在需要之前不会加载其余视图以便更好地保存资源。 / p>