创建多张卡片以在 google 玻璃上滚动
Creating multiple cards to scroll on google glass
我正在尝试构建可以在 google 玻璃上滚动的多个卡片视图。我要显示的数据是存储在数组列表中的对象的数据。
我不知道为什么我使用以下代码在我的玻璃上出现黑屏。尝试按照 google 上的文档进行操作,但没有结果。请原谅我,因为我是 google 玻璃的新手。
Activity Class
@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);
}
舞蹈适配器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); }
}
我的主 activity class 会不会有什么问题?请帮助代码片段。非常感激。
您忘记激活 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 方法中膨胀和 return 视图。
我正在尝试构建可以在 google 玻璃上滚动的多个卡片视图。我要显示的数据是存储在数组列表中的对象的数据。
我不知道为什么我使用以下代码在我的玻璃上出现黑屏。尝试按照 google 上的文档进行操作,但没有结果。请原谅我,因为我是 google 玻璃的新手。
Activity Class
@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);
}
舞蹈适配器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); }
}
我的主 activity class 会不会有什么问题?请帮助代码片段。非常感激。
您忘记激活 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 方法中膨胀和 return 视图。