创建多张卡片以在Google Glass上滚动

时间:2015-06-23 07:36:37

标签: java android google-glass google-gdk

我正在尝试构建多个卡片视图,我可以在我的谷歌眼镜上滚动。我想要显示的数据是存储在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); }
}

我的主要活动课可能有问题吗?请帮助您使用代码段。非常感激。

1 个答案:

答案 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方法中膨胀并返回视图。