我正在尝试构建多个卡片视图,我可以在我的谷歌眼镜上滚动。我想要显示的数据是存储在arraylist中的对象的数据。
我不知道为什么我使用以下代码在玻璃上出现黑屏。试图按照谷歌上的文档,但不是结果。请原谅我,因为我是谷歌眼镜的新手。
活动类
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
mCardScroller = new CardScrollView(this);
mCards = new ArrayList<CardBuilder>();
for(int i=0; i<dataSet.size(); i++) {
CardBuilder card = new CardBuilder(this,Layout.COLUMNS);
card.setText(dataSet.get(i).getInfo());
mCards.add(card);
}
mCardScroller.setAdapter(new danceAdapter(mCards));
setContentView(mCardScroller);
}
danceAdapter Class
public class danceAdapter extends CardScrollAdapter {
private ArrayList<CardBuilder> mCards;
public danceAdapter(ArrayList<CardBuilder> cards){
this.mCards = cards;
}
@Override
public int getCount() { return mCards.size(); }
@Override
public Object getItem(int i){ return mCards.get(i); }
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
return mCards.get(i).getView();
}
@Override
public int getPosition(Object o) { return this.mCards.indexOf(o); }
}
我的主要活动课可能有问题吗?请帮助您使用代码段。非常感激。
答案 0 :(得分:0)
您忘记激活ScrollView。另外作为旁注,你不应该在适配器之外和所有之前制作你的卡。不仅循环效率低(每次迭代都运行.size),因此不需要存储视图的内存量。尝试做这样的事情:
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
mCardScroller = new CardScrollView(this);
mCardScroller.setAdapter(new danceAdapter(dataset));
mCardScroller.activate();
setContentView(mCardScroller);
}
public class danceAdapter extends CardScrollAdapter {
private ArrayList<Object> mDataSet;
public danceAdapter(ArrayList<Object> dataset){
this.mDataSet = dataset;
}
@Override
public int getCount() {
return mDataSet.size();
}
@Override
public Object getItem(int i){
return mDataSet.get(i);
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
Object dataset = getItem(i);
return new CardBuilder(context, CardBuilder.Layout.TEXT)
.setText(dataset.getInfo())
.getView();
}
@Override
public int getPosition(Object o) {
return this.mDataSet.indexOf(o);
}
}
但是如果你想做一个自定义视图而不是支持的CardBuilder。你只需像通常那样在getView方法中膨胀并返回视图。